读/写C中的int二进制文件错误

读/写C中的int二进制文件错误,c,binaryfiles,C,Binaryfiles,我在读取/写入C中的二进制文件时遇到错误。问题是: -我使用fwrite将int(例如2)写入文件 -我尝试使用fread从文件中读取此int -当我读到它时,它不是2,而是一些长的数字,例如967899906或207132354或1030372866(总是不同) 我用C写一个二进制文件,如下所示: FILE * writeFile = fopen("test.bin","wb"); //test int vars int test1 = 1; int test2 = 2; int test3

我在读取/写入C中的二进制文件时遇到错误。问题是: -我使用fwrite将int(例如2)写入文件 -我尝试使用fread从文件中读取此int -当我读到它时,它不是2,而是一些长的数字,例如967899906或207132354或1030372866(总是不同)

我用C写一个二进制文件,如下所示:

FILE * writeFile = fopen("test.bin","wb");

//test int vars
int test1 = 1;
int test2 = 2;
int test3 = 3;

//writing some ints to binary file
fwrite(&test1,1,1, writeFile);
fwrite(&test2,1,1, writeFile);
fwrite(&test3,1,1, writeFile);

fclose(writeFile);
FILE *readFile = fopen("test.bin","rb");
int data;
while(fread(&data,1,1, readFile)==1){
   printf("%d", data); //here it will output some random number
}
fclose(readFile);
然后我从文件中读取如下内容:

FILE * writeFile = fopen("test.bin","wb");

//test int vars
int test1 = 1;
int test2 = 2;
int test3 = 3;

//writing some ints to binary file
fwrite(&test1,1,1, writeFile);
fwrite(&test2,1,1, writeFile);
fwrite(&test3,1,1, writeFile);

fclose(writeFile);
FILE *readFile = fopen("test.bin","rb");
int data;
while(fread(&data,1,1, readFile)==1){
   printf("%d", data); //here it will output some random number
}
fclose(readFile);
作为第二个参数,需要写入数据的大小,因此在您的情况下
sizeof(int)

对fread来说也是一样的

#include <stdio.h>

int main(void)
{
     FILE * writeFile = fopen("test.bin","wb");

     if (writeFile != NULL)
     {
         //test int vars
         int test1 = 1;
         int test2 = 2;
         int test3 = 3;

         //writing some ints to binary file
         fwrite(&test1,sizeof(test1),1, writeFile);
         fwrite(&test2,sizeof(test2),1, writeFile);
         fwrite(&test3,sizeof(test3),1, writeFile);

         fclose(writeFile);
     }
     else
     {
         perror("Error opening file to write: ");
         return 1;
     }


     FILE *readFile = fopen("test.bin","rb");
     if (readFile != NULL)
     {
         int data;
         while(fread(&data,sizeof(data),1, readFile)==1){
            printf("%d\n", data);
         }
         fclose(readFile);
     }
     else
     {
         perror("Error opening file to read: ");
         return 1;
     }

    return 0;
}

如果您有一个
0
fwrite(&test1,1,1,writeFile)的范围,那么LPs在这方面是正确的-->
fwrite(&test1,sizeof(test1),1,writeFile)谢谢,但我有意将每个int保存为1字节(最大值为255)。这将产生怎样的影响?事实上,我应该用最简单的方法让那些测试变量更简单