该程序何时返回0

时间:2013-06-24 11:20:43

标签: c arrays string

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

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;
}

4 个答案:

答案 0 :(得分:2)

您正确分析了该程序。

  

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

- &GT;当行为空时它将返回0

答案 1 :(得分:2)

什么都没有,EOF会在那里,例如如果是空行c==EOF并且您在for循环中输入了(c=getchar())!=EOF的条件。因此,i不会更改,并且在执行return i;后将返回它,它将返回0

我希望这会有所帮助。

答案 2 :(得分:0)

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

for (i=0; i < lim-1 && (c=getchar())!=EOF && c!=’\n’; ++i)

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

答案 3 :(得分:0)

for循环中的一个条件是(c=getchar())!=EOF。所以当线条为空时,即。 c==EOF在第一个实例本身,它不会进入循环。因此i将不会增加并返回0.