c语言,这个函数是什么意思?有什么作用?谢谢

int getline(char s[],int lim)
{
int c,i,j;

j = 0;
for (i = 0; (c = getchar()) != EOF && c != '\n'; ++i)
if (i < lim-2){
s[j] = c;
++j;
}
if (c == '\n'){
s[j] = c;
++j;
++i;
}
s[j] = '\0';
return i;
}
这函数有什么作用?是如何运算的?请详细一点,谢谢

函数功能:获取一行字符串,以回车为结束。入参:char s[]:存储字符串的内存,,int lim:内存的长度,为了防止越界。返回值:输入字符串的长度

for循环内,c = getchar()) != EOF&& c != '\n',获取一份字符,且字符不能是换行符。

if (i < lim-2)语句作用:如果输入字符的个数小于s[]的大小,放入s[]中,j是s[]的下标。至此for循环结束。
if (c == '\n')当输入为换行符时,将输入字符放入s[]中,s[j] = '\0';在s[]最后放入结束符。i是输入字符串的长度。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-09
lim是字串最大长度
c = getchar() 从键盤读取输入字元,放到s[],直到按下 [enter]或 \0 或 输入字元数超过 lim -2
因为要预留两个空间,放置 \n、\0
s[j] = '\0'; 是在 \n 之後插入一个 \0


s = abce'\n'\0''
J是计数输入字元数,也就是字串阵列已使用的空间数
I 则是字串长度,不包含\0