#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp;
char str[256];
char *para;
fp=fopen(argv[1],"r");
while(!feof(fp)){
fgets(str,256,fp);
printf("%s",str);
}
getchar();
return 0;
}
上記のプログラムをコンパイルすると以下のエラーがでます。どうすればいいのでしょうか?
error C2664: 'fopen' : 1 番目の引数を '_TCHAR *' から 'const char *' に変換できません。
そこで
fp=fopen((char *)argv[1],"r");
と書き換えるとエラーは消えますが実行時に引数の1文字目しか代入されていません。
たとえば
progame名 abcdef.txt
とすると((char *)argv[1]にはaしか入っていません。
どうすればいいでしょうか。教えてください。
Unicode/ANSI アプリケーションをコンパイル時に切り替えるようにするのなら、「_t*」関数(マクロ)を一貫して使わないといけません。
fopen -> _tfopen
コメント(2件)
abc は 0x610062006300 となりますので1文字にしか見えないんですねぇ。コンソールアプリであればANSIでいいのではと思うのですが。