C 连续两次写入操作

C 连续两次写入操作,c,fwrite,fread,C,Fwrite,Fread,我在写入模式下打开了一个文件,如下所示: 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); 我正在对文件执行两个变量的frwite(第一个是整数,第二个是字符),如下所示: int a = 10; ch

我在写入模式下打开了一个文件,如下所示:

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);
我正在对文件执行两个变量的frwite(第一个是整数,第二个是字符),如下所示:

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);
  • 两个连续的fwrite操作是否会相互覆盖
  • 如果不是,两个连续的fread操作是否可以正确填充到 我的变量
  • 例如:

    fread(&y,1,sizeof(int),fp);
    fread(&z,1,sizeof(char),fp);
    
    如果连续进行fread操作,y和z变量能否保持10和“m”的值


    不,连续写入不会相互覆盖。它们在相同的文件描述符上执行,操作系统保持跟踪,不会覆盖。至于读取,只要在读取之间不关闭文件描述符,只要正确解析大小,两次读取将正确填充变量。

    两次连续的fread或fwrite只要不是并行执行,就不会导致任何问题

    系统将在文件*中维护seek指针,并确保在连续的FWRITE和FREAD期间写入和读取正确的数据

    有关详细信息,请参阅

    它在返回值部分清楚地说明了以下内容

     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).
    

    @Cytinus..如果我做了两个fwrite操作,第一个变量写为整数,第二个变量写为字符。第一个fread操作会给我整数,第二个fread操作会给我字符,对吗?不,fread会将传递的任何内容作为字符缓冲区。您可能需要执行以下操作:
    yint=atoi(y)
    获取整数值。@cytinos由于
    fwrite
    fread
    都是二进制的,所以
    atoi
    肯定没有用。你的完整代码是什么?读操作是在写操作之后执行还是在什么时候执行?