質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Q&A

解決済

3回答

2705閲覧

CSVファイルからデータを読み込みたいが失敗する

pipimaru

総合スコア16

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

0グッド

0クリップ

投稿2015/10/12 15:17

編集2015/10/12 16:41

データを読み込みたいCSVファイルがあるのですが開くと以下の様なデータになっています

1.2245
-2.1443
1.4443



2.3345(512*512行目)

これを配列a[512*512]に一つづつ読み込みたいのですが、どうにもうまく行きません。
おそらく改行(/n)が含まれているのが原因ではないのかと思います。調べるとそういった改行コードを含んだものはCSVではないと言われているのですが、解決策はあるのでしょうか。

追記
わかりづらくてすみません。CSV形式で出力されないところを問題としているのではありません。
与えられた(512*512)のデータを読み込みその値をひとつひとつ配列に入れたいのですがどのような方法がありますか?
a[0]=1.2245
a[1]=-2.1443



といった具合です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

1.2245
-2.1443
1.4443



2.3345(512*512行目) ’

ファイルは、単純なテキストファイルで、
エディタで見ると、掲示の様になっている。
OS:不明⇒OSにより改行と見做すコードが異なります。
Windows:C/R,L/F 、別なOS:C/R だったり、L/F だったり
1行目:1.2245 、(0,0)、(0)で良いのか?
2行目:-2.1443 、(どこに入れる?)、(512*512)の場所の何処にするか?
言語により、配列の要素数と要素番号の指定が異なるので注意する。
こんかいは、C らしいので、C の配列仕様を調べる。

デバッガが使えますか?
デバッガが使用不可な環境以外では、デバッガの御勉強は必須です。
最低限、エディタ、コンパイラ、デバッガは使えないと
開発環境は、何ですか?
gcc であれば、統合開発環境を何か選びましょう。楽が出来ます。
VS20xx であれば、統合開発環境の使い方を勉強しましょう。

投稿2015/10/13 03:33

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ご質問の主旨が良く分からないのですが…

CSV形式(comma-separated values)とは「カンマ区切りのテキストファイル形式」のことなので、改行を含むかどうかに関わりなく、カンマ区切りでない以上、CSV形式とは呼べません。(CSV形式でも改行を含むものもありますが)

調べるとそういった改行コードを含んだものはCSVではないと言われているのですが、解決策はあるのでしょうか。

「解決策」とは、何の解決でしょうか?
入力ファイルがCSV形式になっていない事が問題なのですか?
それとも単純に、与えられた「512*512行」からなる数値データを配列に読み込めれば良いのでしょうか?

投稿2015/10/12 15:36

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

majiponi

2015/10/15 02:54

CSVというのは、カンマ区切りのことを意味する場合もあれば、character-separated values(文字区切り)を意味することもあります。区切りがタブ文字や改行だったりすることもあるのです。ニホンゴッテムズカシイネ。
guest

0

ベストアンサー

1行に小数点数数(文字列)1個つなら、fgets()で読み込んでstrtod()でdoubleに変換→配列入れる・・・じゃだめですか?
「追記」
配列aはdouble型でいいのでしょうか?
(512*512)と書かれているところを見ると2次元配列なのでしょうか?
データをどう使うかで配列も変わってきます、その辺の説明はないのでしょうか?

投稿2015/10/12 15:28

編集2015/10/13 02:32
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2015/10/13 02:17

回答が付かないようなので・・・ fgetsやstrtodで検索すればかなりのヒットがあります。 サンプルソースもありますから確認されたらどうでしょう?
pipimaru

2015/10/15 11:51

fgetsとstrtodを併用することでうまく読み込むことが出来ました!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問