fopen , fgets に関して質問させてください。
現在「readme」というファイルを UTF-8 にて開こうとしております。
fopen でファイルは開けているようなのですが、fgets を呼び出した際に以下の様なメッセージが出て異常終了してしまいます。
『Microsoft Visual Studio C ランタイム ライブラリは Sample.exe に致命的なエラーを検出しました。
[中断] をクリックしてプログラムをデバッグするか、または [続行] をクリックしてプログラムを終了してください。』
UTF-8 を指定しない場合は上手く動いているようです。
UTF-8 の時は特殊な取り出し方をしなければならないのでしょうか?
Visual C++ 2008 Express Edhition の デバックモードで動かしています。
******************************
1 : FILE *file1;
2 : char s[256];
3 :
4 : file1 = fopen( "C:\\readme", "r, ccs=UTF-8");
5 : while (fgets(s, 256, file1) != NULL)
6 : {
7 : printf("%s", s);
8 : }
******************************
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 で内容をコピーできますし。
ありがとうございます!
やはりワイド文字列しか受け取れないのですね。
そうかもとは思っていましたが、これで確信が持てました。
警告メッセージは質問で書いたものしか出ませんでした。
エラーの見方が悪いだけかもしれませんが。。。
どの様なオペレーションで確認できますでしょうか?
No.1
- 回答日時:
ccsとは何でしょうか。
この回答への補足
http://msdn.microsoft.com/ja-jp/library/yeby3zcb …
fopen("newfile.txt", "rw, ccs=<encoding>");
といった感じで、encoding を指定してファイルを開く時に使用するようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- その他(プログラミング・Web制作) VS codeを使って、ラズパイ Picoを動かせる簡単な方法 1 2023/04/27 13:49
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
fgetsで2行目から文字化け
C言語・C++・C#
-
C言語でUTF-8コードで読み込んで表示は日本語にしたい
C言語・C++・C#
-
VC++でUTF-8のファイルを出力したい
C言語・C++・C#
-
-
4
fgetws関数で読み込んだUNICODE文字列の文字化け
C言語・C++・C#
-
5
コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法
C言語・C++・C#
-
6
_tfopen について教えてください
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C++/CLI】ファイルオープンに...
-
python renameについて
-
JSP URLに表示される拡張子 .jsp
-
MP3情報の表示
-
window.open でのファイル指定方法
-
WindowsでPerlをする際,1行目の...
-
重複ファイル名ある場合ファイ...
-
csvファイルの横方向への改行に...
-
ファイルの存在の有無を確かめ...
-
巨大なテキストの最終行を取得...
-
ランダムスクリプトに時間要素...
-
batファイルでrenameができませ...
-
ExcelをCSV書き出す場合のシー...
-
バッチファイルの作り方(CSV→...
-
VBAでCSVファイルの特定行を書...
-
fopenでディレクトリ内の全ファ...
-
VBAで巨大なファイルの途中から...
-
awkスクリプトでダブルクォーテ...
-
ファイル名を複数個配列で確保...
-
VBAでCSVファイルを途中行まで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python renameについて
-
fgets で値が取得できない
-
window.open でのファイル指定方法
-
巨大なテキストの最終行を取得...
-
ファイル全てを .xlsm に変更し...
-
read() on unopened filehandle...
-
csvファイルの横方向への改行に...
-
VBAコードを張り付け後のエクセ...
-
Firefox で file:// で始まる U...
-
JSP URLに表示される拡張子 .jsp
-
drtファイルはどうしたら開...
-
重複ファイル名ある場合ファイ...
-
並び方、
-
VBA テキストファイルを読み取...
-
cgiでサーバーにファイルを追加...
-
HTMLのフォームで画像と文...
-
WindowsでPerlをする際,1行目の...
-
バイナリファイルの出力
-
Perlでのパーミッション変更の仕方
-
foreach内での変数の扱い?
おすすめ情報