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

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

**エラーメッセージ**

```

    $ 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;
    }
    
```
CC BY-SA 4.0
2020-10-06T03:28:54.223
70950
2020-10-06T04:21:28.383
2020-10-06T04:21:28.383
3060
41837
question
c
あるC言語の参考書の通りにプログラムしたが、エラーメッセージが出てきてしまった
> while((ch=fgetc(fp)!=EOF)

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

```

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

を

```

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

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

プログラミング用のテキストエディタであれば対応する括弧を表示するような機能があると思うので  
そのようなものを活用すると良いと思います。
CC BY-SA 4.0
2020-10-06T03:49:14.390
70952
2020-10-06T03:49:14.390
30745
70950
answer