编写一个函数int mystrlen(char * s),它返回字符串wuthout strlen func中的字符数

时间:2009-12-03 07:07:52

标签: c

这就是我所做的,我只是有一个我无法弄清楚的错误。

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;

5 个答案:

答案 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阅读您的程序 - 这可能会更容易理解:)

  1. 声明变量string1,string2,len1,len2,newstring
  2. 打印消息
  3. 3转到1
    3.1。声明变量string1,string2,len1,len2,newstring
    3.2。打印留言
    3.3。转到3.1
    ... 3.3.1声明变量string1,string2,len1,len2,newstring
    ...... 3.3.2 .....
  4. 你看错了吗? :)

答案 3 :(得分:0)

要想出一个解决问题的方法,你必须明白在C中,“string”是一个以'\ 0'结尾的字符数组。这应该足以帮助您解决问题。

答案 4 :(得分:0)

int mystrlen(char string[])
{
    int i = 0;
    while(string[i] != '\0'){
        ++i;
    }
    return i;
}