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

C 将无符号长数据类型写入二进制文件,c,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(&phon

我不知道如何将无符号长变量(本例中为电话号码)写入二进制文件

我有这个

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键时,它会显示Segmentation fault


我不知道该从这里走到哪里。

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

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;

}

,您可以修复这些问题并再次进行测试

当您开始使用它时,
phoneNum
指向什么?既然您甚至没有编写空终止符,您将如何再次读取
useInput
!此外,我不认为使用
-Wall
可以很好地编译所有内容,您应该会收到大量错误。如果您不相信,请尝试
-Wall-Werror