我在写入模式下打开了一个文件,如下所示:
int a = 10;
char b = 'm';
int y = 0;
char z;
FILE *fp = NULL;
fp = fopen("/config/gps_backup.dat","w");
我在文件上做了两个变量(第一个是整数,第二个是字符),如下所示:
fwrite(&a,1,sizeof(int),fp);
fwrite(&b,1,sizeof(char),fp);
例如:
fread(&y,1,sizeof(int),fp);
fread(&z,1,sizeof(char),fp);
如果连续的fread操作完成,y和z变量可以保持10和'm'的值。
Tha
答案 0 :(得分:3)
两个连续的fread或fwrite不应该导致任何问题,只要它们不是并行完成的。
系统将在FILE *中维护搜索指针,并确保在连续的fwrit和fread期间获得正确的数据写入和读取。
您可以参考man page了解更多详情。
它在RETURN VALUES部分明确说明了以下内容
The functions fread() and fwrite() advance the file position indicator
for the stream by the number of bytes read or written. They return the
number of objects read or written. If an error occurs, or the end-of-
file is reached, the return value is a short object count (or zero).
答案 1 :(得分:1)
不,连续写入不会互相覆盖。它们在相同的文件描述符上执行,操作系统保持跟踪并且不会覆盖。至于读取,只要您不在读取之间关闭文件描述符,这两个读取将正确填充变量,因为您正确地解析了大小。