原型:char *fgets(char *buf, int bufsize, FILE *stream)
参数:从stream读取bufsize大小的数据到buf
功能:
从文件结构体指针stream中读取数据,每次读取一行。
读取的数据保存在buf指向的字符数组中,每次最多读取
bufsize-1个字符(第bufsize个字符赋'\0'),
如果文件中的该行,不足bufsize个字符,则读完该行就结束。如果函数读取成功,则
返回指针buf,失败则返回NULL。
stream文件流指针体指向文件内容地址的偏移原则
如果使用fgets()读取某个文件,第一次读取的bufsize为5,而文件的第一行有10个字符(算上
'\n'),那么读取文件的指针会偏移至当前读取完的这个字符之后的位置。
也就是第二次再用fgets()读取文件的时候,则会继续读取其后的字符。
如果使用fgets()
读取文件的时候bufsize大于该行的字符总数加2(多出来的两个,一个保存文件本身的'\n'换行,一个保存字符串本身的结束标识'\0'),
文件并
不会继续读下去,仅仅只是这一行读取完,随后指向文件的指针会自动偏移至下一行。
示例:
int main(void)
{
FILE *fp = NULL;
char buf[512] = {0};
fp = fopen("touch.txt","r");
if ( NULL == fp) {
printf("open file failed.\n");
return 0;
}
fgets(buf, 5, fp);
printf("first read 5 char buf = %s\n", buf);
fgets(buf, 5, fp);
printf("second read 5 char buf = %s\n", buf);
return 0;
}
阅读(4836) | 评论(0) | 转发(0) |