首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此程序何时返回0

问此程序何时返回0
EN

Stack Overflow用户
提问于 2013-06-24 19:20:43
回答 4查看 137关注 0票数 1

以下函数用于返回通过键盘输入的行的长度。但它说(C编程语言K& R) it will return the length of the line, or zero if end of file is encountered.,但当我用我的C语言基础知识分析时,它至少返回了行的长度到EOF。那么它什么时候返回0。或者我的理解是错的。有人能给我澄清一下吗?

代码语言:javascript
复制
int getline(char s[],int lim)
{
    int c, i;
    for (i=0; i < lim-1 && (c=getchar())!=EOF && c!=’\n’; ++i)
        s[i] = c;
    if (c == ’\n’) {
        s[i] = c;
        ++i;
    }
    s[i] = ’\0’;
    return i;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-24 19:28:45

当什么都没有的时候,EOF就会出现,比如在空行,c==EOF的情况下,你已经在for循环中输入了一个条件,那就是(c=getchar())!=EOF。因此,i不会改变,当在执行return i;之后返回它时,它将返回0

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2013-06-24 19:22:04

你对程序的分析是正确的。

但是,当我用C语言进行基本知识分析时,至少是返回到EOF的行的长度

->当该行为空时,它将返回0

票数 2
EN

Stack Overflow用户

发布于 2013-06-24 19:23:57

如果该行为空,则返回0。

代码语言:javascript
复制
for (i=0; i < lim-1 && (c=getchar())!=EOF && c!=’\n’; ++i)

首先,设置i=0;。如果为((c=getchar())==EOF),则for循环不会运行,i也不会递增。当第一个字符是\n时,情况是一样的(在这种情况下,我将在稍后递增)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17274235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档