在一个问题中遇到了一个小问题,自己试了一下,小结一下 关于fgets的用法,在man手册中是这样解释的: char *fgets(char *s, int size, FILE *stream); fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a new- line is read, it is stored into the buffer. A '\0' is stored after the last charac- ter in the buffer. 这个的大致意思是这样的:当读到一个新行或者是一个EOF标志时,fgets()就会结束,并且这个函数会自动给末尾加'\0'。 我有这样一个问题:这个fgets()到底是读了多少个字节? man里面所说的'\0'是如何加上的? 这个size包括'\0'这个字符吗? 我写了一个测试程序:
#include<stdio.h> #include<string.h> #define N 10 int main() { char a[N]={0}; int i=0; while(fgets(a, N,stdin)){ fprintf(stdout,"%d %s@%d\n", i, a,strlen(a)); i++; } return 0; }