Поэтому я использую-структуру, чтобы создать адрес, который выглядит следующим образом:создание массива структуры с
typedef struct Address{
char street[100];
char city[100];
char state[3];
int zip;
}address;
У меня есть текстовый файл, который выглядит следующим образом:
123 Anywhere
Spokane
WA
99223
500 Sprague Ave
Spokane
WA
99201
319F CEB
Cheney
WA
99004
Когда я прочитал в файле я получаю огромную проблему. Он будет читать в нескольких строках правильно, но все остальное не так. Любые цифры полностью ошибочны.
int fillArray(address *array, FILE * fin){
int i=0, total=0;
do{
fgets(array[i].street, 100, fin);
fgets(array[i].city, 100, fin);
fgets(array[i].state, 3, fin);
fgets(array[i].street, 100, fin);
fscanf(fin, "%d", &array[i].zip);
total++;
i++;
}while(!feof(fin));
return total;
}
Очевидно, что я делаю что-то не так, но я не уверен, что я делаю неправильно. Я думал, что если я использую fgets, он получит строку, а затем сохранит ее в области, в которой я нуждался. Я использовал fscanf для всего, что было раньше, и я тоже никуда не денусь. Он просто получит 123, а затем Anywhere в следующие места, так как он будет идти до первого пробела, который он видит. Есть ли способ использовать fscanf для получения всей строки, или это не то, что делает fgets? Есть ли более простой способ сделать это? Да, я знаю, что я не должен использовать while (! Feof (fin)), но наш учитель учит этому прямо сейчас, и это то, что я пока буду использовать. Заранее спасибо. Я искал в Интернете и, похоже, не добираюсь туда, куда мне нужно идти.
Что вы подразумеваете под «Он будет читать в нескольких строках правильно, но большинство всего остального не так».? Можете быть более конкретными? –