我目前正在学习著名的 C 书 - The C Programming Language, 2Ed。当我尝试 P.29 中的代码时,我认为 getline 函数有问题:
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;
}
如果当 for 循环结束时,i == lim-1
并且c == '\n'
?在这种情况下,我认为数组将超出边界,因为s[lim]
将设置为“\ 0”。
有人认为这是错误的吗?谢谢你的帮助。