У меня есть текстовый файл, который содержит номера учеников, имя и точку построчно. Я пытаюсь добавить эти строки в массив структур.
Пример данных в data.txt
723269,Lincoln Burgess,32
543256,Amayah Burnett Bush,63
751201,Robert Downey Jr,73
...
...
Мой код
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STUDENT_SIZE 273
typedef struct {
int stNo, points;
char name[40];
} Student;
int readTxtFile(const char *filename, Student *students) {
FILE *fin = fopen(filename, "r");
if (!fin) {
printf("Can't open file: %s\n", filename);
return 0;
}
int i = 0;
while (fscanf(fin, "%d,%s,%d",
&students[i].stNo,
students[i].name,
&students[i].points) == 10)
++i;
fclose(fin);
return i;
}
void printArray(Student *students, int size) {
for (int i = 0; i < size; i++) {
Student *st = &students[i];
printf("%d,%s,%d\n", st->stNo, st->name, st->points);
}
}
int main() {
Student students[STUDENT_SIZE];
char myFile[] = "/Users/can/clang/practice/data.txt";
int size = readTxtFile(myFile, students);
printArray(students, size);
return 0;
}
Код не выдает ошибку, но ничего не выводит на консоль.
%sсscanfчитает только слова, разделенные пробелами. Вам нужен другой способ чтения ввода, содержащего пробелы. - person Some programmer dude   schedule 02.12.2020== 10? Вы делаете только 3 конверсии, поэтому вам следует проверить== 3. - person G. Sliepen   schedule 02.12.2020while(fscanf(fin, "%d,%[^,],%d", ...) == 3)- person L. Scott Johnson   schedule 02.12.2020