Я пытаюсь написать небольшую программу базы данных, которая будет иметь 5 функций, то первый из них Add(), но я получаю ошибку Segfault на зсапЕ:Segfault зсапЕ и fprintf
void Add(); struct data{ char name[20]; char description[300]; int quantity; }; typedef struct data dataobj; dataobj element; int main() { Add(); return 0; } Add() { FILE *database; database = fopen("database.txt", "a+"); printf("Object: \n"); fgets(element.name,20,stdin); fprintf(database, element.name); printf("Description: \n"); fgets(element.description,300,stdin); fprintf(database, element.description); printf("Quantity: \n"); scanf("%d",&element.quantity); fprintf(database, element.quantity); fclose(database); }
это ошибка: Программный сигнал SIGSEGV, ошибка сегментации. В ungetwc() (C: \ WINDOWS \ SysWOW64 \ msvcrt.dll)
окноотладчик:
#0 0x77bea965 ungetwc() (C:\WINDOWS\SysWOW64\msvcrt.dll:??) #1 0x77c21268 msvcrt!_iob() (C:\WINDOWS\SysWOW64\msvcrt.dll:??) #2 ?? ??() (??:??)
Кроме того, я заметил, что если я пишу fgets после инструкции Scanf, fgets не будет выполняться для некоторых причины ... Итак, в прототипе мне пришлось сохранить этот порядок: char char int (например, я не мог писать: char int char)