fgetsにてテキストファイルを読込と"0"がデータの間に入る

[戻る]
たくみ 2007/06/08(金) 12:11:34
VC++で社内業務メンテンナンス担当となりました。
初心者のたくみです。
<結果>
下記コーディングでfgets実行すると
inputdata[0]=-1,[1]=-2,[2]="A",[3]="0",[4]="A",[5]="0",[6]="A".....[15]="A",
[16]="0"
となります。
<ABC.TXTの内容>
    "AAAAAAAAAAAAAAAA"
<コーディング>
    FILE *fp = NULL;
    char FILEPATH[256];
    char inputdata[17] ="0";
  strcat(FILEPATH, "ABC.TXT");
    fp = fopen(FILEPATH, "r");
    fgets(inputdata,17,fp);
ABC,TXTの内容は、間違いなく改行もされているのですが
何故、こうなるのか解りません。
宜しくお願い申し上げます。

tetrapod 2007/06/08(金) 12:40:00
読み取り結果が FF FE 41 00 41 00 となっているようだな。
これはつまり BOM つき UTF16LE Unicode Text っつーことだ。
http://www.atmarkit.co.jp/aig/01xml/bom.html

動作も結果もまったくもって正常。

んで、どうなって欲しいわけ?

シャノン 2007/06/08(金) 13:17:38
テキストファイルとは何か、ということがわかってなさげ。

テキストファイルとは、文字をエンコードした文字コードを記録したファイルです。
エンコード方法には複数(Shift-JIS とか EUC とか Unicode とか)あり、どの方法を
使ったかによって、同じ 'A' という文字でも、どんな文字コードになるかは変わりま
す。
メモ帳で見た時に "AAA" と書かれていたからといって、即、0x41 0x41 0x41 だと決め
つけることはできません。

Blue 2007/06/08(金) 13:22:59
一応類似スレです。

VS.NET2003 C++でUnicodeファイルの読込み 
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1660768&SiteID=7

たくみ 2007/06/08(金) 15:19:07
[[解決]]
tetrapodさん、ご回答ありがとうございました。
私がやりたかったことは、
<ABC.TXTの内容>
    "AAAAAAAAAAAAAAAA"をそのまま読込むことです。
BOMつきだったのでこうなったのですね。
タグ付テキストにして、実行したら正常に読めました。m(_ _)m
感謝です。(^.^)/

たくみ 2007/06/08(金) 15:23:24
[[解決]]
シャノン さん、Blueさん、ご回答ありがとうございました。
テキストファイルにもいろいろあるのですね。
これを参考に勉強させて頂きます。感謝!

古いスレッドには追加発言できません。