• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fgets で値が取得できない)

fgetsで値が取得できない

このQ&Aのポイント
  • fopen, fgets関数を使用してreadmeファイルをUTF-8で開こうとするとエラーメッセージが表示される
  • UTF-8指定時には特殊な取り出し方が必要なのか疑問
  • Visual C++ 2008 Express Editionのデバッグモードで実行している

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> ccs=UTF-8 を指定した場合、ワイド文字型配列にしか受け取れないらしいです。 つまり >char s[256]; >while (fgets(s, 256, file1) != NULL) ではダメで wchar_t s[256]; while (fgetws(s, 256, file1) != NULL) にしないといけない。 ちなみに --------------------------- Microsoft Visual C++ Debug Library --------------------------- Debug Assertion Failed! Program: C:\XXXX\test.exe File: f:\dd\vctools\crt_bld\self_x86\crt\src\fgets.c Line: 75 Expression: ( (_Stream->_flag & _IOSTRG) || ( fn = _fileno(_Stream), ( (_textmode_safe(fn) == __IOINFO_TM_ANSI) && !_tm_unicode_safe(fn)))) For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) --------------------------- 中止(A) 再試行(R) 無視(I) --------------------------- というような警告メッセージが出るはずなので、そのまま貼り付けてもらうほうが 回答が付きやすいと思います。 メッセージボックス表示中に Ctrl + C で内容をコピーできますし。

mikami532
質問者

お礼

ありがとうございます! やはりワイド文字列しか受け取れないのですね。 そうかもとは思っていましたが、これで確信が持てました。 警告メッセージは質問で書いたものしか出ませんでした。 エラーの見方が悪いだけかもしれませんが。。。 どの様なオペレーションで確認できますでしょうか?

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

ccsとは何でしょうか。

mikami532
質問者

補足

http://msdn.microsoft.com/ja-jp/library/yeby3zcb(VS.80).aspx fopen("newfile.txt", "rw, ccs=<encoding>"); といった感じで、encoding を指定してファイルを開く時に使用するようです。

関連するQ&A