2015-06-15 3 views
-1

Я использую fscanf для чтения значений int из файла. Он работает правильно, но, как я это сделал, компилятор дает несколько предупреждений.Как исправить предупреждения, появившиеся при использовании fscanf()?

Источник:

FILE *fp = NULL; 
fp = fopen(argv[1],"r"); 
int num; 
while(fscanf(fp,"%d",&num) != EOF) // This is the line 46 
    printf("%d ",num); 

Предупреждения:

passing argument 1 of ‘fscanf’ from incompatible pointer type 
format not a string literal and no format arguments [-Wformat-security] 
passing argument 2 of ‘fscanf’ from incompatible pointer type 
Line breakpoint: main.c [line: 46] 

Что я делаю неправильно?

+3

redefine prototype of fscanf, фактический код отличается. Например, fscanf ("% d", & num) '. (до сохранения?) – BLUEPIXY

+1

Обязательно '#include ' перед этим кодом. – chux

+1

Незначительный: используйте 'while (fscanf (fp,"% d ", & num) == 1)' а не 'while (fscanf (fp,"% d ", & num)! = EOF)', чтобы избежать проблем, когда файл а не конец, но имеет неконвертируемый текст. – chux

ответ

0

переопределять прототип fscanf, фактический код отличается например fscanf("%d",&num). (до сохранения?) - BLUEPIXY

0

Вам просто нужно скобка

while((fscanf(fp,"%d",&num)) != EOF) // This is the line 46 
Смежные вопросы