Функция для записи структур в текстовый файл - PullRequest
0 голосов
/ 28 мая 2018

Я написал эту функцию для записи структур в текстовый файл, но когда я пытаюсь вызвать ее в своей основной функции, она просто завершает мою программу, как будто ее не существует.

void unos_aritkala(void) {
    FILE* pok = NULL;
    pok = fopen("artikli.txt", "a+");
    if (pok == NULL) {
        printf("Datoteka se ne moze otvoriti\n");
    }
    else {
        ARTIKL artikl; 
        printf("Unesite ime artikla: ");
        scanf("%s", &artikl.ime);
        printf("Unesite cijenu artikla ");
        scanf("%f", &artikl.cijena);
        printf("UNesite ID artikla ");
        scanf("%d", &artikl.ID);
        fprintf(pok, "Ime: %c\n, Cijena: %f\n ID: %d\n", artikl.ime, artikl.cijena, artikl.ID);
    }
    fclose(pok);
}

1 Ответ

0 голосов
/ 28 мая 2018

fprintf для форматированного вывода, и если я не ошибаюсь, независимо от того, как вы fopen() отредактировали файл, он выводит только строки.

Используйте fwrite() вместо.

Подробная ссылка на tutorialspoint.com

Для вашего конкретного случая вы можете просто написать

pok = fopen( "artikli.txt" , "w" );
fwrite(artikl, sizeof(ARTIKL), 1 , pok);
fclose(pok);

Для нескольких структур (например, в массиве), как только вы откроете файлВы можете повторно вызывать fwrite() для каждого элемента.

// Assuming you have your structs in an array named list of size listSize
for(i=0; i< listSize; ++i)
 fwrite(list[i], sizeof(ARTIKL), 1, pok);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...