整数不写入C中的文件

以下代码运行良好,除了我的输出文件不包含整数10,而是在VIM中打开它时使用的字符^ @ ^ @ ^ @。如果我在textedit(在Mac上)中将其打开,则该文件似乎为空。 有人知道我在哪里错吗?
#include <stdio.h>
#include <stdlib.h>

#define MAX_LINE 256
#define MAX_NAME 30

int main() {
   FILE *fp;
   char fname[MAX_NAME] = \"test1.dat\"; 
   int x =10;
   int num= 0;

   if( (fp =fopen(fname, \"w\")) == NULL) {
      printf(\"\\n fopen failed - could not open file : %s\\n\", fname);
      exit(EXIT_SUCCESS);
   }

   num= fwrite(&x, sizeof(int), 1, fp);
   printf(\"\\n Total number of bytes written to the file = %d\\n\", num);

   fclose(fp);

   return(EXIT_SUCCESS);
}
    
已邀请:
您正在写入二进制数据,并期望看到ASCII。 您可以使用
fprintf
fprintf(fp, \"%d\", x)
以ASCII码写数字     
您的代码正在将四个字节
0x0000000a
的二进制表示形式写入文件,即
^@^@^@\\n
要以ASCII格式编写,请改用
fprintf
。     
您将整数的二进制字节写入了文件,这就是您所拥有的。 如果要查看文字\'1 \',请使用
sprintf
。二进制文件在文本编辑器中通常看起来是空的或奇怪的。     
您正在写入二进制数据并期望使用ASCII吗? 如果您想写入格式化的数据,可以使用例如fprintf()函数而不是fwrite()。     
您正在以二进制形式打开文件,因此基本上,您是在写ascii字符10,而不是数字10。 根据您要执行的操作,可以在文本模式下打开,使用fprintf ...     

要回复问题请先登录注册