まず、ポインタについて簡単にまとめました。
【 前提 】 ポインタは特定のデータ型のデータがある場所を指す "所在" の情報だ
【 準備 】
#include <stdio.h> main() { int *p; *p = 3; printf( "%d\n", *p ); }別な環境で同じプログラムを実行すると、今度は 3 と表示されました。 なぜ、そんなことが起こるのかも推測してみてください。 (答えは、次回のC言語の Tips で ・・・) |
[ 関連記事 ] 用語集:ポインタ, Tips:配列とポインタのクイズ(1), 同(2), 同(3), NULLポインタ
[ ご案内 ] ポインタの要点を学習できるコース:要点講座 [配列とポインタ編]
1箇所目(正)if( (fp = fopen( "data.txt", "r" )) == NULL ) (誤)if( fp = fopen( "data.txt", "r" ) == NULL )( ) がないと、優先度の高い == が = より先に評価され、fp にオープンしたファイルへのポインタが入りません。
2箇所目(正)while( (c = fgetc( fp )) != EOF ) (誤)while( c = fgetc( fp ) != EOF )こちらも ( ) がないと、= より先に != が評価されます。 ファイルから読んだ文字でなく、fgetc( fp ) != EOF の評価結果が c に代入されるのでうまくいきません。