C Программирование fscanf - PullRequest
0 голосов
/ 04 мая 2011

У меня есть файл, содержащий это:

JS;John Silver;27264543

и я хочу получить информацию отдельно, например:

Имя: Джон Сильвер
Код: JS
Телефон: 27264543

Я использую это:

while(!eof(fp2))
{
    fread(line, 1, 100,fp2);
    fscanf(fp2,"%s;%[^;]s,%[^;]d",p.code, p.name, p.tel);    
}
printf("Code: %s\n", p.code);
printf("Name: %s\n",p.name);
printf("Telephone: %d\n",p.tel);

p - это структура;

Но не работает, он падает. Что я делаю не так?

Привет

Ответы [ 2 ]

3 голосов
/ 04 мая 2011

Если p.tel является int, то вам нужно передать указатель на него в fscanf. Попробуйте вместо этого &p.tel.

(Однако это только предположение, потому что у нас нет определения типа p.)

1 голос
/ 04 мая 2011

Вам нужно проверить возвращаемое значение scanf(), а не просто предполагать, что оно работает.

if (fscanf(fp,"%s;%[^;]s,%[^;]d",p.code, p.name, p.tel) != 3) /* handle error */;

Подсказка: пример строки возвращает 2 из scanf. Scanf завершается с ошибкой при буквальном s

"%s;%[^;]s,%[^;]d"
/*  HERE ^ */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...