Не удается разделить строку с помощью sscanf?

У меня есть текстовый файл со связанными номерами, т.е.
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 дает:
1 2 2

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


person FizzBuzz    schedule 24.03.2010    source источник
comment
Прочитайте это: merriam-webster.com/dictionary/seperate. Эта и все остальные записи. Это избавит вас от речей о разделении привилегий в будущем.   -  person    schedule 24.03.2010
comment
Я не уверен, как словарное определение seperate поможет мне в программировании? Также обратите внимание, что мы оба написали «разделение» неправильно.   -  person FizzBuzz    schedule 25.03.2010
comment
Я не ошибся, чувак. Вы также должны взять уроки сарказма. Я пытался помешать вам выглядеть идиотом-ученым, когда вы станете великим программистом. К вашему сведению, большинство веб-браузеров в настоящее время включают поддержку проверки орфографии.   -  person    schedule 26.03.2010


Ответы (1)


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

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

Из вашего комментария кажется, что вы неправильно объявляете строки. Вы хотите что-то вроде:

char s[10], e[10];

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

person Community    schedule 24.03.2010
comment
ладно честно, это глупая ошибка. я пытался объявить s и e как char s, char e или как char s[], char e[], ни один из них, кажется, не помогает. - person FizzBuzz; 24.03.2010
comment
@Trent Как насчет char s[10], e[10]; - person ; 24.03.2010
comment
@Trent Ну, тебе нужно опубликовать больше кода. Пожалуйста, сделайте это, отредактировав исходный вопрос. - person ; 24.03.2010
comment
ладно, сотрите это, я думаю, что теперь я разобрался, забыл добавить адрес d. Спасибо, Нил. - person FizzBuzz; 24.03.2010