вы в настоящее время сканируете свои данные в 3 строки, каждый раз сдвигая смещение на 1 вместо 3 таблиц строк.
Вам нужно объявить свои данные другим способом. Например, двумерный массив char
Вместо этого я предлагаю структуру и массив структур, поэтому у вас есть только один индекс (здесь я предполагаю, что максимальный размер для строки равен 100):
typedef struct Element
{
char one[100];
char two[100];
char three[100];
int st;
};
Element elements[MAXLEN];
теперь сканируйте так:
for (i = 0; i < MAXLEN; i++) {
Element *e = elements+i; // pointer on ith element
fscanf(fpointer, "%99s%99s%99s%d", e->one, e->two, e->three, &e->st);
}
Используйте &
для целого числа, а не для строк (это уже указатели). Также, возможно, хорошо проверить, что fscanf
возвращает 4 (проверка ошибок). 99s
гарантирует, что вы не переполните свои строки (макс. Длина: 100 с нулевым терминатором)
В сторону: если у вас есть строки с пробелами, scanf
не будет работать должным образом, вам придется использовать fgets
, а затем strtok
на точках с запятой, чтобы получить элементы