#include
int main()
{int slen(int *p);
int *p;
char s[1000];
p=s;
printf("请输入字符串:");
gets(s);
printf("该字符串长度为:%d",slen(p));
return 0;
}
int slen(int *p)
{int l=0;
for(;*p!='\0';p++)
l++;
return l;
}
您好,很高兴能为您解答:
(1)您的slen()函数未写出来,估计是有问题,对于字符串测长度,C可以采用内置strlen函数,用法不赘述
(2)您的指针可能有指向错误,而且完全没有必要使用。
(3)由于您从文件读入,建议使用fgets
用fgets代替gets
我没看错吧:关键的slen()函数是怎么定义的,你的代码中不给出来,别人肯定不知道是出了什么错误。
看起来是slen()输出了固定的值。
这个问题的解决思路偶一般是:
(1)先看是否正确获取到输入的字符串,例如:使用 printf 将输入的字符串回显出来。
(2)再看字符串长度计算函数,将 *p 的数值也用 printf 输出。
这样任何位置出来错误,都能及时发现并解决。
计算字符串长度可以直接用内置函数“strlen()”即可。
而且没有必要非要用指针呀,反而麻烦啦,直接对字符串处理就可以啦,只要读到'\0'就计算前面字符的个数并返回。
int strlen(const char *str)
{
assert(str != NULL);
int len = 0;
while((*str++) != '/0')
len++;
return len;
}