2010-10-13 3 views
0
  char line[MAXBUF]; 
      char *result; 

      while((result = fgets(line, MAXBUF, fp)) != NULL) { 
       printf(result); 
      } 

Следующий код не работает полностью. Кто-нибудь знает, как распечатать результат? MAXBUF определяется как 1024, а fp - только указатель файла на некоторый файл. То, что им следует делать в этом назначении, - это прочитать файл и распечатать файлы, выводимые на стандартный вывод. Есть идеи?Как распечатать результат до стандартного вывода?

на линию Е (результат) я получаю эту ошибку «предупреждение: формат не строковые и не аргументы формата»

+2

printf (line); ? – JoshD

+0

Как это не работает, и чего вы ожидаете? (и, кстати, файл, который вы читаете, содержит любые% символов, например% d или ..% s?) – nos

+7

Нужно действительно использовать 'printf («% s », result)', а не 'printf (result)', особенно если 'result' содержит'% 'символов. –

ответ

0

взглянуть на спецификации fgets, лучше:

while(fgets(line, MAXBUF, fp)!= NULL) { 
       puts(line); 
      } 

или

while(fgets(line, MAXBUF, fp)) { 
       puts(line); 
      } 
+0

Я не вижу, что это делает, кроме добавления дополнительной строки новой строки между каждой строкой. 'result' может не понадобиться, но это не так. –

1

Ниже то, что вы хотите сделать:

char line[MAXBUF]; 
char *result; 

while((result = fgets(line, MAXBUF, fp)) != NULL) { 
     printf("%s", line); 
} 

fgets вводит строку (сохраняя новую строку). Вы проверяете результат, который является правильным. Теоретически результат должен быть равным. У printf нет '\ n', потому что символ новой строки сохраняется из fgets (см. Man-страницу).

Смежные вопросы