【发布时间】:2017-02-19 00:37:44
【问题描述】:
/ * fgets: get at most n chars from iop * /
char * fgets(char * s, int n, FILE * iop)
{
register int c;
register char * cs;
cs = s;
while (-n > 0 && (c = getc(iop)) != EOF)
if (( * cs++ = c) == ′\n′)
break;
*cs = ′\0′;
return (c == EOF && cs == s) ? NULL : s;
}
请问我的问题是为什么在 return 语句中使用 cs == s。由于 fgets 应该返回 NULL,如果文件结束或发生错误,为什么 return 语句不只是 return (c == EOF) ?空:s;
getc 也是一个 c 标准库函数,它从 iop 指向的文件中一次读取一个字符。函数 fgets 从 iop 指向的文件中读取一行,如果成功,则返回读取的行,存储在字符数组 s 中。如果遇到文件结尾或发生错误,则返回 NULL
干杯
【问题讨论】:
-
getc,也是一个c标准库函数,每次从iop指向的文件读取一个字符。函数 fgets 从 iop 指向的文件中读取一行,如果成功,则返回读取的行,存储在字符数组 s 中。如果遇到文件结尾或发生错误,则返回 NULL
标签: c