C语言程序,求字符串长度。请大家帮我看看哪错了,在线等→_→
答案:1 悬赏:40 手机版
解决时间 2021-03-21 03:36
- 提问者网友:温旧梦泪无声
- 2021-03-20 04:30
C语言程序,求字符串长度。请大家帮我看看哪错了,在线等→_→
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-03-20 05:22
哥们,你都没有输入,你怎么计算啊:
length = f(n);
这句的前面加一句gets(n);
还有一点就是int i, j;这句改为int i, j = 0;
还有return (j-1);这句和下一句交换一下位置,并改为return (j);
修改后:
#include
int main(void)
{
int f(char * n);
char n[100];
int length;
printf("请输入字符串:");
gets(n);
length = f(n);
printf("字符串长度为:%d
",length);
return 0;
}
int f(char * n)
{
int i,j = 0;
for(i = 0;*(n +i) != '';i++)
{
j++;
}
return(j);
}追问谢谢您!!
输入那块和j=0我提问完之后都意识到了,
不过您说“return (j-1);这句和下一句交换一下位置,并改为return (j); ”
这一句我是从网上抄的,所以也不知道为什么,改了之后也还是不知道为什么,所以您能不能帮我解释一下~谢谢啦!!追答'\0'是一个字符串的结束标识,遇到'\0'就不循环了,实际上j的最后结果就是最后字符串的有效长度,即实际长度,return放到循环内部,那么第一次循环的时候就会跳出函数了,得等到循环结束才能测到字符串长度,所以放到循环外面。。
length = f(n);
这句的前面加一句gets(n);
还有一点就是int i, j;这句改为int i, j = 0;
还有return (j-1);这句和下一句交换一下位置,并改为return (j);
修改后:
#include
int main(void)
{
int f(char * n);
char n[100];
int length;
printf("请输入字符串:");
gets(n);
length = f(n);
printf("字符串长度为:%d
",length);
return 0;
}
int f(char * n)
{
int i,j = 0;
for(i = 0;*(n +i) != '';i++)
{
j++;
}
return(j);
}追问谢谢您!!
输入那块和j=0我提问完之后都意识到了,
不过您说“return (j-1);这句和下一句交换一下位置,并改为return (j); ”
这一句我是从网上抄的,所以也不知道为什么,改了之后也还是不知道为什么,所以您能不能帮我解释一下~谢谢啦!!追答'\0'是一个字符串的结束标识,遇到'\0'就不循环了,实际上j的最后结果就是最后字符串的有效长度,即实际长度,return放到循环内部,那么第一次循环的时候就会跳出函数了,得等到循环结束才能测到字符串长度,所以放到循环外面。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯