2008-09-24 3 views
1

Я пишу программу, и у меня возникают проблемы с использованием scanf и fopen, работающих вместе.Как использовать scanf() с fopen

Из того, что я могу сказать, мои ошибочные строки, кажется:

FiLE * DataFile 
DataFile = fopen("StcWx.txt","r"); 
scanf(DataFile, "%i %i %i %.2f %i %i", &Year, &Month, &Day, &Precip, &High, &Low); 

файл он открывается с содержит список данных о погоде, которая выглядит следующим образом:

1944 4 12 0 58 24 
1944 4 13 0.4 58 29 
1944 4 14 0.54 42 29 
1944 4 15 0 43 27 

(Эти пространства вкладки)

Отображается сообщение об ошибке «Предупреждение», передающее arg 1 «scanf» из несовместимого типа указателя »

Может ли кто-нибудь мне помочь?

+0

Необходимо дать более подробную информацию. Например, каковы типы Year, Month, Day, Precip, High и Low? – 2008-09-24 18:40:38

ответ

1

Вы используете неправильную функцию. Вы должны использовать fscanf.

2

Ваш код выглядит так, как будто он должен использовать fscanf, а не scanf.

Я бы настоятельно рекомендовал использовать fgets и sscanf вместо прямого вызова fscanf.

Возможно, fscanf может оказаться в недоумении, где находится указатель на файл. Использование fgets для получения целых строк и sscanf для сканирования строк означает, что вы всегда знаете состояние указателя файла, и очень легко создать резервную копию до начала строки (строка все еще находится в памяти).

+0

... и atoi() для 4-го параметра – 2008-09-26 07:04:56