"" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
error C2679: 二項演算子 '=': 型 'FILE *' の右オペランドを扱う演算子が見つかりません (または変換できません)。C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt\corecrt_wstdio.h(28): note: '_iobuf &_iobuf::operator =(_iobuf &&)' の可能性がありますC:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt\corecrt_wstdio.h(28): note: または '_iobuf &_iobuf::operator =(const _iobuf &)'

ソース(バグ有り):

//パイプを作成し、コマンドを実行するサンプル
#include <stdio.h>

int main()
{
FILE fp;
//バッファを作成
char buff[256];
//パイプを作成 "r"によりコマンドの標準出力を読み取り
fp=_popen("dir","r");
while(fgets(buff,sizeof(buff),fp)!=NULL)
{
printf("%s",buff);
}
_pclose(fp);
return 0; }


原因:


対処:


ソース(修正済み):

//パイプを作成し、コマンドを実行するサンプル
#include <stdio.h>

int main()
{
FILE *fp;
//バッファを作成
char buff[256];
//パイプを作成 "r"によりコマンドの標準出力を読み取り
fp=_popen("dir","r");
while(fgets(buff,sizeof(buff),fp)!=NULL)
{
printf("%s",buff);
}
_pclose(fp);
return 0; }

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]