ch = fgetc(fp)是对fp文件进行去一个字符,但是要注意的是,ch读完之后,fp已经发生1个字节的偏移了,假如下面还要对fp进行操作,就需要重新进行fseek。
fputc('\n', fp)写入一个字符到fp文件中,
fgets读取一串字符:fgets(buf, 255, fp);读完整个文件返回NULL,fopen也是返回NULL(假如出错的话)。假如fegets读取小于一行的字节数,那么读到的是设置是字节数-1个字节数,假如读取范围是一行字节数加2的,那么读取一整行,包括\n,在结尾加上\0
文件结束符EOF==end of file
while(fgetc(fp) != EOF)
fgets:
从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。
stream文件流指针体指向文件内容地址的偏移原则
如果使用fgets()读取某个文件,第一次读取的bufsize为5,而文件的第一行有10个字符(算上'\n'),那么读取文件的指针会偏移至当前读取完的这个字符之后的位置。也就是第二次再用fgets()读取文件的时候,则会继续读取其后的字符。而,如果使用fgets() 读取文件的时候bufsize大于该行的字符总数加2(多出来的两个,一个保存文件本身的'\n'换行,一个保存字符串本身的结束标识'\0'),文件并不会继续读下去,仅仅只是这一行读取完,随后指向文件的指针会自动偏移至下一行。