あるC言語の参考書の通りにプログラムしたが、エラーメッセージが出てきてしまった

投稿者: Anonymous

ファイルの中身を表示するプログラムを、ある参考書の通りに作成したのですが、コンパイル時にエラーが出てしまいました。

私の見た限りでは、{( の位置に特に変な点はなかったと思うのですが、どこがおかしいのでしょうか。

エラーメッセージ

$ cc p7.c
p7.c: In function ‘main’:
p7.c:21:9: error: expected ‘)’ before ‘putchar’
         putchar(ch);
         ^~~~~~~
p7.c:23:4: error: expected expression before ‘}’ token
    }
    ^

プログラム

#include<stdio.h>

int main()
{
   FILE  *fp;
   int ch;
   char fname[FILENAME_MAX];

   printf("ファイル名:");
   scanf("%s",fname);

   if((fp=fopen(fname,"r"))==NULL)
      printf("aそのファイルはありませんn");
   else{
    while((ch=fgetc(fp)!=EOF)
        putchar(ch);
      fclose(fp);
   }
   return 0;
}

解決

while((ch=fgetc(fp)!=EOF)

の括弧が足りていません。

while( ( ch = fgetc(fp) != EOF )

while( ( ch = fgetc(fp) ) != EOF )

のように修正する必要があります。

プログラミング用のテキストエディタであれば対応する括弧を表示するような機能があると思うので
そのようなものを活用すると良いと思います。

回答者: Anonymous

Leave a Reply

Your email address will not be published.