2012-02-19 8 views
0

私はコードをコンパイルしようとすると、私は次の警告を得る:GCCコンパイラの警告:フォーマット「%cが」「のchar *」型の引数を期待していますが、引数2は型を持つ「int型*」[-Wformat]

exercise6.c:32:14:警告:フォーマット '%c'は 'char *'型の引数を要求しますが、引数2は 'int *'型を持ちます[-Wformat]

この警告の原因とは何ですか私が直します?

/*Write a program that displays the contents of a file at the terminal 20 lines at 
a time. At the end of each 20 lines, have the program wait for a character to be 
entered from the terminal. If the character is the letter q, the program should 
stop the display of the file; any other character should cause the next 20 lines 
from the file to be displayed.*/ 

#include <stdio.h> 
#include <stdlib.h> 

int main (void) 
{ 
    int c, i; 
    FILE *file; 

    if ((file = fopen ("text", "r")) == NULL) 
    printf ("Error opening the file.\n"); 

    for (i = 0; i < 20;) { 
     c = getc (file); 

     if (c == EOF) { 
      fclose (file); 
      exit (EXIT_SUCCESS); 
     } 

     putc (c, stdout); 

     if (c == '\n') 
      ++i; 

     if (i == 20) { 
      scanf ("%c", &c); 
      if (c == 'q') { 
       fclose (file); 
       exit (EXIT_SUCCESS); 
      } 
      i = 0; 
     } 
    } 
} 

答えて

5

char chを定義し、scanfにそれを使用。 scanfのための不一致引数を使用して

int c, i; 
char ch; 

/* ... */ 
scanf ("%c", &ch); 

は技術的には未定義の動作です。

関連する問題