这就是我所做的,我只是有一个我无法弄清楚的错误。
int mystrlen(char string[])
{
char string1[LENGHT], string2[LENGHT];
int len1, len2;
char newstring[LENGHT*2];
printf("enter first string:\n");
len1 = mystrlen(string1);
printf("enter second string:\n");
len2 = mystrlen(string2);
if(len1 == EOF || len2 == EOF)
exit(1);
strcpy(newstring, string1);
strcat(newstring, string2);
printf("%s\n", newstring);
return 0;
答案 0 :(得分:2)
作弊,但遵守你的规则......
int mystrlen( char *s)
{
return strchr( s, '\0') - s;
}
答案 1 :(得分:0)
您在所有分支上递归调用相同的函数。它不会工作 - 该程序将导致堆栈溢出,并且很可能崩溃很长时间。
你需要以这样的方式构建程序:
int mystrlen(char string[])
{
//compute length here
}
void testStuff()
{
//your code here
}
答案 2 :(得分:0)
尝试使用Pseudocode阅读您的程序 - 这可能会更容易理解:)
你看错了吗? :)
答案 3 :(得分:0)
要想出一个解决问题的方法,你必须明白在C中,“string”是一个以'\ 0'结尾的字符数组。这应该足以帮助您解决问题。
答案 4 :(得分:0)
int mystrlen(char string[])
{
int i = 0;
while(string[i] != '\0'){
++i;
}
return i;
}