

趣味でゲームを製作しているのですが、その中で、
マップデータのテキストファイルを二次元配列に読み込むようにしています。
データファイルは、カンマ区切りで、例えば、
1,2,3,4,5
5,4,3,2,1
1,2,3,4,5
というようになっています。
fp=fopen(path,"r");
for(j=0; j<3; j++)
{
for(i=0; i<5; i++)
{
char c;
do{c=(getc(fp));}
while(c==','||c=='\n'||c=='\r');
map[j][i] = c-'0';
}
}
配列の各要素に読み込む中身が、0~9など1文字に限られている場合、このgetc()を使う方法で問題ないのですが、0~255など、文字数がまちまちになると、1文字を取り出すgetc()ではできなくなってしまいます。
これがどうすれば可能になるのか、情けないのですがちょっと思いつかないので、アドバイスを頂ければ幸いです。
No.4ベストアンサー
- 回答日時:
少し手を入れたらできそうですね。
{
char c;
do{c=(getc(fp));}
while(c==','||c=='\n'||c=='\r');
//-----------追加-----ここから
// int calc; の宣言要
calc = 0;
do { calc = (c - '0') + (calc*10);}
while(isdigit(c=getc(fp)));
//-----------追加-----ここまで
map[j][i] = calc;
}
具体的にありがとうございました。
例えば123だったら、
1→1*10+2→12*10+3で、123が取り出せるということですね。
これは面白いと思いました。
No.3
- 回答日時:
CSVのようにセパレータで区切られた文字列を処理するときは、
fgets()で一行取り出して、strtok()で分割するのがよろしいかと思います。
参考URL:http://www9.plala.or.jp/sgwr-t/lib/strtok.html
No.2
- 回答日時:
fscanf を使ったらどうですか
読み込むデータ数が決まっているから
fp=fopen(path,"r");
fscanf(fp,"%d,%d,%d,%d,%d\n",&map[0][0],&map[0][1],&map[0][2],&map[0][3],&map[0][4]);
fscanf(fp,"%d,%d,%d,%d,%d\n",&map[1][0],&map[1][1],&map[1][2],&map[1][3],&map[1][4]);
fscanf(fp,"%d,%d,%d,%d,%d\n",&map[2][0],&map[2][1],&map[2][2],&map[2][3],&map[2][4]);
fclose(fp);
でいいかと思います。
実際には巨大な二次元配列なので、全て列挙していくのは難しいのですが、方法としてはシンプルで、よくわかりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C言語】全角文字の配列を、全...
-
visual studio 2022でのC#プロ...
-
VisualStudioでC++クラスを追加...
-
gccを行ってもexeファイルが生...
-
いまc言語を独学で勉強している...
-
C言語の関数のextern宣言
-
終端記号、非終端記号とは
-
C言語について。
-
c言語でイベントフラグを使った...
-
プログラミング 2つの整数を読...
-
Windows Formアプリからコンソ...
-
UART通信の取説で,left floati...
-
Notepad++の関数リスト表示の変...
-
c言語
-
VisualStudioで、コードを印刷...
-
pythonの質問です。
-
C言語 解答について。
-
写真のプログラムは、1からnま...
-
c言語の問題です
-
大量のデータを読み込んで表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのデータを配列に...
-
二つのbxsliderをレスポンシブ...
-
迷路探索プログラムを作るには...
-
Googleストリートビューの写真...
-
C言語の 配列の中 出力について
-
google maps 吹き出しカウント...
-
Google Maps:同マップ内でそれ...
-
Google Mapsからxmlファイルの...
-
googlemap v3 のDTD宣言について
-
Google maps api v3と印刷について
-
Yahoo!地図上でアイコンを表示...
-
google map吹き出し
-
Python: TypeError
-
webサービス上のkmlをgooglemap...
-
javascript 配列の値により結果...
-
たくさんの経由地がある巡回ル...
-
Google Maps API V3のxml
-
Googleマップ上で、オリジナル...
-
サイドバー付きGoogle Mapについて
-
GoogleMapでアイコンを500件表...
おすすめ情報