一个c语言关于strlen函数的问题

#include<stdio.h>#include<string.h>#defineMAXLINE1000intmain(){intc,i,len;charline[MA... #include<stdio.h>
#include<string.h>
#define MAXLINE 1000
int main()
{
int c,i,len;
char line[MAXLINE];
for(i=0;(c=getchar())!=EOF;++i)
line[i]=c;
len=strlen(line);
printf("%d\n",len);
}
想知道我这个程序为什么输不出结果???
展开
 我来答
吉祥二进制
高粉答主

2013-03-02 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33922 获赞数:84610

向TA提问 私信TA
展开全部
错误:line数组没有进行初始化,因为c风格的字符串,末尾以'\0'结束,即0, 如果你不初始化则strlen()函数那句就是死循环,永远得不到结果。修改为:
char line[MAXLINE] = {0};

按下CTRL+Z键才能结束掉你前面的赋值操作,因为循环条件是判断是否为EOF,这个值是-1,用键盘输入-1,即CTRL+Z键盘。

没事,来百度0x30 贴吧 耍耍,共同,分享交流C/C++ 
马拉古城
2013-03-02 · TA获得超过240个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:153万
展开全部
我想你是不明白EOF的意思,EOF是end of file的简称,也就是说你输入的再多它也不会结束,因为没到文件的结尾,刚刚那人的CTRL+Z的意思就是跟结束差不多,你可以这样改
#include<stdio.h>
#include<string.h>
#define MAXLINE 1000
int main()
{
int c,i,len;
char line[MAXLINE];
for(i=0;(c=getchar())!='\n';++i) //这里改为回车符就好了
line[i]=c;
len=strlen(line);
printf("%d\n",len);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
48757368
2013-03-02 · 超过10用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:31.2万
展开全部
#include<stdio.h>
#include<string.h>
#define MAXLINE 1000
int main()
{
int c,i,len;
char line[MAXLINE];
for(i=0,c = getchar();(c=getchar())!=EOF;++i)
line[i]=c;
len=strlen(line);
printf("%d\n",len);
}
Look at this, after you input the string and an enter, put a Ctrl + z to finish input, answer will come out!!
追问
我试了下,你这个方法确实可以,不过为什么要输入Ctrl+z??这是什么原理???
追答
Ctrl + z表示输入一个EOF
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式