dポイントプレゼントキャンペーン実施中!

fgetsでcsvファイルを読み込めなくなる!?

Cを使って、csvをfgetsで読み込むプログラムを作っています。
実際に製作し、csvファイルを(A.csvとします)読み込むことができました。

しかしデスクトップ上で
「新規作成」
→「txtファイルを作成」
→「拡張子を.csvにし、csvファイル(B.csv)を作成」
→「Aの中身をコピーし、Bにペースト」
を行い、B.csvを読み込もうとすると、
読み込むことができません(正確には文字化けした、単語が数文字表示される)

これは何が原因なのでしょうか?
ご教授お願いいたします。

A 回答 (3件)

『fgets()で読み込む』ということなので、プログラムで使用している文字コードはShiftJISでしょう。



csvファイルを何を使って編集しているかわかりませんが、
Windows標準のメモ帳で編集してみてはどうですか?

「ファイル」「名前を付けて保存」を選択すると表示されるダイアログボックスに、
[文字コード]を選択する欄が表示されます。
ここで「ANSI」を選択(XPの場合)して保存すれば、ShiftJISで保存されます。
    • good
    • 1
この回答へのお礼

無事解決しました!!

ありがとうございます。

お礼日時:2010/08/06 17:06

文字コードがUTFなのでBOMと呼ばれるUTFの文字コードをしめすコードがファイルの先頭に記述されているのです。


UTFコードに対応したテキストエディタならBOMの有無に対応しています。
一度、テキストエディタでファイルを開いて、BOMなしで保存するか、文字コードをシフトJISにして保存してみてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

あまりこういうことには詳しくなくて。。

具体的にどうすればよいのでしょうか?

何度も質問して申し訳ありません。

お礼日時:2010/07/02 13:21

どう文字化けしてるのか分からないので何とも言えませんが、


A.csvとB.csvとでは文字コードが違っているのかと……

例えばB.csvがUTF16で保存されていて、プログラムがANSI文字にしか対応していないと文字化けが起こります。また、ASCII文字はUTF16では上位バイトに00が詰められるので、ANSI系の文字列処理では文字列の終端と見なされてしまいます。fgetsも途中で読み込みが終わります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

CSVファイル内には
2行*4000列の数字データがあります。
それを読み込むと

ミマ爍ア

と表示され、プログラムがエラーを起こします。


magicalpassさんのおっしゃることが原因で
あるとするならば、どのような対処をすれば
よいのでしょうか?

お礼日時:2010/07/02 13:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!