最后祥轮一个字符,如果读入成功了就返回这个“字符”。
然后继续往下读(此时已经都读完了,后面没有了),读取失败 返回的才是EOF,设置 stream 上的文件尾指示器(feof()),若是其他(非读到文件尾)原因导致失败也是返回EOF(但此时因其他错误导致失败)则设磨宴消置 stream 上的错误指示器(ferror() )。
想要得到“EOF”需瞎知要在正好读完全文的条件下 再进行任意一次读取,此时读取失败才会有“EOF”。
首先这四个源前函数都是从文件或者输入设备读取数据,它们之间的主要区别如下:
一、fgetc
这个函数主要用于从文件或者输入设备逐个读取字符并通过返回值返回。一般如果是从文件读取,这个文件得提前以文本模式打开。
二、fgets
这个函数主要用于从文件或者输入设备读取一行字符,如果从文件读取也要求以文本模式打开文件。这个函数相对gets要安全,因为它可以通过第二个参数指定最大能读取的字符数,防止溢出。同时这个函数会读入换行符,它一般可以和fputs函数配合使用,fputs函数输出不会自动换行。fgets也可以从键盘输入字符,通过第三个参数指定读取位置,stdin表雹和清示从键盘,文件指针表示从文件。
三、fscanf
这个函数从文件中以格式化形式读取,也是要以文本形式打开文件,具体的用法和scanf一样。文件得是文本形式,二进制形式一般是会读取出错。
四、fread
fread函数主要用于以二进制模式从文件中读取数据,它一般和fwrite函数配合使用。主要用于结构体类型变量的读取。它要求文件先以二进制模式打开,如果不指定二进制模式在Windows系统可能出错,因为Windows的换行是两个字符,是换行和回车两个字符转化而来棚做。所以使用这个函数最好以二进制打开。
1、fgets和悔弊fgetc都是文件函数中的输入函数。其中第fgets是输入一个字符串,而fgetc则是输入一个字符。讲道理输入一个字符是比输入一个字符串快,但是也快不上零点几毫秒。
2、例如:
#include <string.h>#include <stdio.h>
int main(void)
{
FILE *stream
char string[100],c
stream = fopen("fan.txt", "r+") /* 打碧辩族开一个文本*/
fgets(string,99, stream) /* 读取文本中第一行 */
printf("%s", string) /* 在控制台显示该行文字 */
c = fgetc(stream)//读取文本第二行第一个字符
putchar(c) //在控制台显示该字符
fclose(stream) //关闭文件
return 0
}
3.
如果是读写同样多的字符,fgets应当高一些.
因为它只读一次。即系统只调用一次。
你fgetc一方面加循环,另一方面,系统调灶脊用多次。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)