У меня есть некоторая проблема в fscanf
функция. Я новичок в C, и я хотел сделать строки чтения из файла и сохранить их в структуре, но, похоже, я не очень хорошо это понимаю ^^.fscanf wont work - Программа выдает ошибку
PATIENT *patientTab;
int tabSize = 0;
int patientCount = 0;
PATIENT temp;
int tempIndex = 0;
if (openFile()){
printf("Plik otworzony!\n\n");
while(fscanf(dataBase, "%s %f",
&temp.patientNumber,
&temp.patientGender,
&temp.patientLength,
&temp.patientWeigth,
&temp.patientHeadCircuit,
&temp.patientApperance,
&temp.patientPulse,
&temp.patientGrimace,
&temp.patientActivity,
&temp.patientRespiration)
!= EOF){
if (patientCount + 1 >= tabSize){
tabSize += 5;
patientTab = realloc(patientTab, sizeof(int) * tabSize);
}
for (tempIndex; tempIndex < 5; tempIndex++){
patientTab[patientCount].patientNumber[tempIndex] = temp.patientNumber[tempIndex];
}
patientTab[patientCount].patientGender = temp.patientGender;
patientTab[patientCount].patientLength = temp.patientLength;
patientTab[patientCount].patientWeigth = temp.patientLength;
patientTab[patientCount].patientHeadCircuit = temp.patientHeadCircuit;
patientTab[patientCount].patientApperance = temp.patientApperance;
patientTab[patientCount].patientPulse = temp.patientPulse;
patientTab[patientCount].patientGrimace = temp.patientGrimace;
patientTab[patientCount].patientActivity = temp.patientActivity;
patientTab[patientCount].patientRespiration = temp.patientRespiration;
patientCount++;
}
//free(temp);
fclose(dataBase);
}
else endProgram();
dataBase является глобальным.
Проблема заключается в том, что программа пытается зациклиться на «while», которая включает функцию «fscanf», программа выдает ошибку, и единственное, что я могу сделать, это закрыть программу. Я нашел пример в Интернете, но это был простой пример с одной переменной. Я уверен, что проблема заключается в моей декларации со многими параметрами с « temp».
Структура:
typedef struct Patient {
char patientNumber[5];
char patientGender;
double patientLength;
float patientWeigth;
float patientHeadCircuit;
int patientApperance;
int patientPulse;
int patientGrimace;
int patientActivity;
int patientRespiration;
}PATIENT;
... и это фрагмент содержимого файла: txt link
Что это безобразие? строка формата 'scanf' предназначена только для двух параметров. И вы проходите как миллион из них. –
Значения всех остальных элементов структуры будут неопределенными, поскольку struct 'temp' не была инициализирована. UB. –
Я не понимаю, что вы имеете в виду, используя только ** два тега формата формата для чтения в ** 10 ** переменных: 'while (fscanf (dataBase,"% s% f ", & temp.patientNumber, & temp. patientGender, & temp.patientLength, & temp.patientWeigth, & temp.patientHeadCircuit, & temp.patientApperance, & temp.patientPulse, & temp.patientGrimace, & temp.patientActivity, & temp.patientRespiration) '? – user3078414