У меня возникли проблемы с моим методом readfile
. Я не могу распечатать числовые значения в текстовом файле, но мое имя прекрасное.Проблемы с чтением файла с использованием цикла while
Это все, что находится внутри моего текстового файла:
Bob
10
12.00
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "iofunctions.h"
int readfile(struct account accarray[], int* numcust, char filename[])
{
/* variables */
FILE *inputFile;
char line[25];
char spaceEater[25];
char name[25]={"\0"};
int accountNum;
float money ;
inputFile = fopen("People_Info.txt", "r");
if(inputFile == NULL)
{
fprintf(stderr, "Sorry, I cannot open this file. Also it's empty.\n");
exit(1);
}
/*outer loop is to check if file is not null*/
while(!feof(inputFile))
{
/*while file has something*/
while(fscanf(inputFile,"%s %d %f", name,&accountNum,&money))
{
accarray->accountno = accountNum;
accarray->balance = money;
printf("name = %s number = %d balance = %f\n", name, &accountNum, &money);
}
}
fclose(inputFile);
return 0;
}
Кроме того, это моя структура:
struct account
{
char name[25];
int accountno;
float balance;
};
'fscanf()' * может * возвращение -1; (и 'while (! feof()) {}' всегда неверно) – joop
Также вы уверены, что имя никогда не содержит более 24 символов? – Neijwiert
Если 'fscanf()' возвращает 0, ваш код, похоже, перейдет в бесконечный цикл. И 'http: // stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong' неверен. См. Http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong –