c语言 这句fscanf不能由fread替代吗

图片说明
图片说明

看你写入的是二进制数据还是文本, fwrite 写入的就用 fread 读出, fprintf 写入的就用 fscanf 读出,混着用会出现乱码

不可以。fwrite/fread将以二进制形式写入/读取文件,例如像例子中的int类型,将会以数值形式保存。若使用记事本等程序打开将会看到无法识别的内容。
fprintf/fscanf把数据内容格式化为字符串,实际写入文件的内容为该字符串每一个字符的ASCII码。若用记事本打开则显示文本内容。
假设像例子程序中的a[50]数组,使用fwrite/fread时无需使用循环语句(尽管使用循环语句一次读取一个也并没有什么问题),
fwrite(a, sizeof(int), 50, fp);
将会把a数组在内存中的内容复制到文件;
fread(a, sizeof(int), 50, fp);
将会把文件中长度50 * sizeof(int)的数据写入a数组。
fprintf/fscanf无需多讲,即把数据格式化为字符串进行读写。

应该是可以的,只要读入的格式正确

可以的,实现方法很多种

fread 是读取文件内容到数据缓冲区---指针(支持二进制数据) 对应的函数是 fwrite :将数据缓冲区的数据写到文件中去。
fscanf 格式化读文件内容到相应的数据指针中去(只支持文本方式) 对应的是 fprintf :格式化输出数据到文件中去。