纠错(用指针)写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度

以下是我写的代码:(运行时出现错误,我不知道是哪里错了)#include<stdio.h>intmain(){chara[20];intstringlength(char... 以下是我写的代码:(运行时出现错误,我不知道是哪里错了)
#include<stdio.h>int main(){ char a[20]; int stringlength(char *p); int i; gets(a); stringlength(a); printf("The length of the string is %d",i); return 0;}int stringlength(char *p){ int i; while(*p!='\0') { i++; p++; } return i;}

究竟是为什么会出现以上这样的错误呢?
展开
 我来答
cjj796
推荐于2016-06-23 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3464万
展开全部

程序帮你改了,你看看后面的注释吧

#include<stdio.h>
int stringlength(char *p);  //函数声明最好放在主函数前

int main()
{
   char a[20];
   int i;
   gets(a);
   i=stringlength(a);      //这里要经函数的返回值,赋给 i 
   printf("The length of the string is %d",i);
   return 0;
}
int stringlength(char *p)
{
   int i=0;               //这里的 i 要初始化为 0
   while(*p!='\0')
   {
       i++;
       p++;
   }
   return i;
}

百度网友34591bb
2013-09-16 · TA获得超过2769个赞
知道小有建树答主
回答量:1149
采纳率:50%
帮助的人:434万
展开全部
主函数里面
stringlength(a);
printf("The length of the string is %d",i-1);
改为
i = stringlength(a);
printf("The length of the string is %d",i-1);
或者
printf("The length of the string is %d",stringlength(a)-1);

因为你函数stringlength()的返回值在主函数里面没有变量接收啊。
所以输出i的时候就把分配给i的内存里面的乱七八糟弄出来了。

另外我刚试了一下,因为你的程序输入字符串是回车确定,由于回车也是个字符,所以你在输出的时候还要把字符串的值减1才是你打的字符值。 答案我改好了。
追问
我按你的方法试了下,不行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式