Запись неподписанного длинного типа данных в двоичный файл - PullRequest
0 голосов
/ 10 марта 2019

У меня проблемы с выяснением того, как записать длинную переменную без знака (в данном случае номер телефона) в двоичный файл.

У меня есть

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;

}

Все прекрасно скомпилируется-анси и -стенные флаги.Когда я запускаю его, он позволяет мне ввести номер телефона, но когда я нажимаю клавишу ввода после того, как я закончу набирать номер телефона, он говорит «Ошибка сегментации».

Я не уверен, куда идти дальше.

1 Ответ

0 голосов
/ 10 марта 2019

Ваш код имеет несколько проблем.Я прокомментировал эти вопросы.

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;

}

Проверка вашего кода в режиме реального времени, вы можете исправить эти проблемы и протестировать его снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...