C言語のfopen関数で「警告: 2 番目の ‘fopen’ の引数へ渡すときに整数からキャスト無しにポインタを作成しています [デフォルトで有効]」と言うエラーが出たときの対処法

解決してみると相当しょうもない事でハマってしまったので、メモとして解決策を書いておきます。

今回C言語のfopen関数を触って出たエラーは以下の通り。

bf.c:50:3: 警告: 2 番目の ‘fopen’ の引数へ渡すときに整数からキャスト無しにポインタを作成しています [デフォルトで有効]
if ((fp = fopen(fileName, 'r')) == NULL) {
^
In file included from bf.c:2:0:
/usr/include/stdio.h:272:14: 備考: expected ‘const char * __restrict__’ but argument is of type ‘intextern FILE *fopen (const char *__restrict __filename,

警告: 2 番目の ‘fopen’ の引数へ渡すときに整数から…のエラーの対処法

上記のエラーが発生している時は、おそらくC言語で以下のコードを書いた時だと思う。

  if ((fp = fopen(fileName, "r")) == NULL) {  // fopen() 関数が呼ばれる時にエラーが発生。
printf("ERROR! can not find a such file\n");
exit(1);
}

このエラーが出たときにチェックすべき点は、モードがダブルクォーテーション ” になっているかどうかの部分だ。

fp = fopen(fileName, 'r')

上記の例だとrの部分がシングルクォーテーションで囲われているからエラーが起こる。
これを以下のように修正する。

fp = fopen(fileName, "r")

ボクの場合は、これだけでエラーが治った。

参考記事:c – expected ‘const char * restrict’ but argument is of type ‘int’ with strtok function – Stack Overflow

参考記事:C言語関数辞典 – fopen

参考記事:Single quotes vs. double quotes in C or C++ – Stack Overflow

ReratedPosts

C言語のvoidの使い方について
socketのgetaddrinfoの使い方や仕組みについてまとめてみる
WindowsのMinGWでdxlib(DXライブラリ)を使う手順を紹介する
C言語のコンパイルにおけるアセンブラ→実行ファイルまでの流れをまとめてみた
C言語のstrstr関数の色々な使い方
なぜ子プロセスを呼び出した時にsetsid()を使うのか?