将无符号长数据类型写入二进制文件

时间:2019-03-10 00:30:02

标签: c

我在弄清楚如何将无符号的长变量(在这种情况下为电话号码)写入二进制文件时遇到麻烦。

我有这个

int main()
{
   char useInput[100];
   unsigned long *phoneNum;
   FILE *fp = fopen("test.bin", "wb");


   while (strncmp(useInput,"exit",4)){

   printf("Phone #: ");
   scanf("%lu",phoneNum);
   fwrite(&phoneNum, sizeof(phoneNum), 1, fp);

   printf("Fname: ");
   fgets(useInput,100,stdin);
   useInput[strlen(useInput)-1]='\0';
   fwrite(&useInput, strlen(useInput), 1,fp);

   }

   fclose(fp);
   return 0;

}

一切都可以使用-ansi和-Wall标志进行编译。当我运行它时,它允许我输入电话号码,但是当我输入完电话号码后按Enter键时,它会显示细分错误。

我不确定从这里去哪里。

1 个答案:

答案 0 :(得分:0)

您的代码有多个问题。我评论了这些问题。

int main()
{
   char useInput[100];
   unsigned long *phoneNum;
   FILE *fp = fopen("test.bin", "wb");


   while (strncmp(useInput,"exit",4)){ // useInput is not initialized for the first iteration 

   printf("Phone #: ");
   scanf("%lu",phoneNum); // phoneNum is not initialized
   fwrite(&phoneNum, sizeof(phoneNum), 1, fp);

   printf("Fname: ");
   fgets(useInput,100,stdin);
   useInput[strlen(useInput)-1]='\0';
   fwrite(&useInput, strlen(useInput), 1,fp);

   } // this closing curly bracket is missing

   fclose(fp);
   return 0;

}

A live test of your code,您可以修复这些问题并再次进行测试。