Здравствуйте почему не работает программа на си?
Мне нужно в этой программе описать структуру и работать с ней но уже выдает ошибки при подключении текстового файла. Кампилятору не нравиться типы данных почему то и не нравиться сканф и fopen. В чем может быть проблема подскажите пожалуйста.
#include <stdio.h>
struct worker {
char name[50];
char work[20];
int time;
int pay;
int born;
};
struct worker workers_list[10];
int main()
{
int n = 10;
FILE* file;
int i = 0;
file = fopen("fscanf.txt", "w");
while (fscanf(file, "%s%s%d%d%d",
&(workers_list[i].name), &(workers_list[i].work),
workers_list[i].time, workers_list[i].pay, workers_list[i].born) != EOF)
{
printf("%s%s%d%d%d\n", workers_list[i].time, workers_list[i].pay, workers_list[i].born);
i++;
}
fclose(file);
}
Ответы (1 шт):
Во-первых, вы открываете файл на запись и пытаетесь читать из него. При открытии существующего файла просто на запись, всё содержимое затирается. Если файла не было - он создастся.
Во-вторых у вас неправильно указаны параметры, и компилятор сообщает вам об этом. Спецификатор "%s" требует в параметрах char*. А вы передаете char**, т.к. имя символьного массива является указателем на него.
// неправильно
fscanf(file, "%s%s%d%d%d", &(workers_list[i].name),
// правильно
fscanf(file, "%s%s%d%d%d", workers_list[i].name,
А для int - наоборот нужно передать адрес
// неправильно
fscanf(file, "%s%s%d%d%d", , , workers_list[i].time,
// правильно
fscanf(file, "%s%s%d%d%d", , , &(workers_list[i].time),
Ну и в printf у вас аргументов меньше, чем спецификаций