Не можете отделить строку с помощью sscanf? - PullRequest
0 голосов
/ 24 марта 2010

У меня есть текстовый файл связанных номеров, т. Е.
1 2 2
3 2 1
3 4 3

Каждая строка представляет собой отдельный фрагмент информации, поэтому я пытаюсь прочитать ее по одной строке за раз, а затем разделить ее на 3 числа, но sscanf не выполняет то, что я ожидаю.

char s[5];
char e[5];
char line[100];
int d;

fgets(line, sizeof(line), inFile);
sscanf(line, "%s %s %d", s, e, d);

вставка printf после fgets yeilds:
1 2 2

но затем после sscanf переменные 's' и 'e' равны нулю, а 'd' - это какое-то случайное число, которое я даже не могу понять, откуда оно.
Не уверен, что я делаю неправильно, любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 24 марта 2010

Нам действительно нужно увидеть объявления ваших переменных, но в случае с d вы обязательно должны передать адрес:

sscanf(line, "%s %s %d", s, e, &d);

Судя по вашему комментарию, вы не правильно объявляете строки. Вы хотите что-то вроде:

char s[10], e[10];

в зависимости от того, насколько велики ожидаемые значения. Но вы должны указать размер. Переменная line должна быть объявлена ​​аналогично.

...