一、fread和read的区别
fread和read都是常用的文件读取函数,不同之处在于read以byte为单位读取,而fread则以数据类型为单位读取。对于二进制文件来说,它们的最终结果是一样的,但对于文本文件,如果使用read读取时,会将换行符,制表符等视为一个字符,而fread则直接按字符个数读取。
而且,在读取非二进制文件时,使用fread来读取文本文件会在读取到null字符时自动停止,而read会读取整个文件,直到文件结尾。
二、fread能读取的编码文件
fread函数可以操作所有二进制文件,包括纯文本文件、Unicode文件和UTF-8文件等。在读取纯文本文件时,需要考虑文本编码,如UTF-8、GBK、Unicode等。
三、fread函数的参数
fread函数的参数如下:
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
其中,ptr是指向接收数据的内存地址的指针变量;size是每个数据项的大小,单位为字节(byte);count是要读取的数据项个数;stream是要读取的文件指针。
四、fread函数
fread函数的功能是从指定的流中读取数据,将其存储在指定的缓存区中。
由于是按照数据类型为单位读取数据,因此能够读取任意类型的数据,而不仅仅是字符类型数据。
五、fread读取文件
下面是利用fread函数读取文件的代码示例:
#includeint main () { FILE *fp; char ch[100]; fp = fopen("file.txt","r"); fread(ch, 1, 50, fp); printf("%s", ch); fclose(fp); return 0; }
以上代码打开名为file.txt的文件,并读取其前50个字符存储到字符数组ch中。注意,需要在读取完成后,手动在ch的结尾添加'\0'来表示字符串结束。
六、fread读取二进制文件
下面是利用fread函数读取二进制文件的代码示例:
#includestruct MyData { int num; char name[20]; float balance; } data; int main () { FILE *fp; fp = fopen("data.bin","rb"); fread(&data, sizeof(struct MyData), 1, fp); printf("%d %s %f", data.num, data.name, data.balance); fclose(fp); return 0; }
以上代码打开名为data.bin的二进制文件,读取其中的数据结构体存储到data中。每次读取一个数据,其大小由sizeof(struct MyData)指定。
七、fread歌曲
fread不仅可以用来读取文件,还可以用来读取其他数据,比如说二进制中的歌曲文件。下面是利用fread函数将歌曲读取进内存中的代码示例:
#include#include int main() { FILE *fp; char *buffer; size_t fileLen; fp = fopen("song.mp3", "rb"); fseek(fp, 0, SEEK_END); fileLen = ftell(fp); fseek(fp, 0, SEEK_SET); buffer = (char *) malloc(fileLen * sizeof(char)); fread(buffer, fileLen, 1, fp); fclose(fp); free(buffer); return 0; }
以上代码将名为song.mp3的歌曲文件读取进内存中,使用malloc函数动态分配足够的内存来存储歌曲数据,并最终释放内存。
八、freading
freading表示使用fread函数进行文件读取操作,在编程中常常使用这种缩写方式来提高代码可读性。
九、fread函数的功能
除了上述功能外,fread函数还有以下几个功能:
- 当读取中发生错误时,它会返回一个错误吗。
- 它可以读取包括二进制文件或文本文件等多种文件类型。
- 使用fread函数可以大大提高读取效率。