
はじめまして。
hiraです。
今非常に基本的であろうことに悩んでいます。まだまだプログラムを始めたところなのでうまくいきません。
内容は・・・
あるファイルを読み込んで、二次元の配列に格納していく。
です。
具体的には
test.txtというファイルがあり、中身は数字の二次元配列です。
カンマやtabで区切られています。配列の大きさ、数字の桁数などはファイルによって違います。
そのファイルを読み込んで、配列に格納したいと考えています。
今は一列を読み込むことには成功しています。そこからどのようにして分けて言ったらいいのか・・・ご教示お願いします。
もしくは、もっと違う方法で読み込む方法があればよろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fin;
char array[256];
char buf[256];
fin=fopen("test.txt","r");
if(fin == NULL){
printf("%sがオープンできません\n",fin);
exit(1);
}
while(fgets(buf,256,fin) != NULL)
{
ここが問題・・・
}
fclose(fin);
return 0;
}
No.2ベストアンサー
- 回答日時:
★『strchr』、『strpbrk』、『strtok』などの文字列関数を使う。
・どの関数を使ってもカンマ、タブ区切り、数字を切り分けてくれます。
・サンプルとして『strtok』関数バージョンを紹介します。
・『while』文の内部のみです。
サンプル:
char buff[ 256 ];
char *tokn = ",\t"; ←カンマとタブ文字を指定
char *seek; ←文字列のシーク移動用
while ( fgets(buff,sizeof(buff),fin) != NULL ){ ←sizeof(buff)で『buff』のサイズ(256)になる
if ( (seek = strtok(buff,tokn)) != NULL ){
do {
/*
value = atoi( seek ); ←『atoi』関数で数字文字列を整数に変換して value にセット
ここは出題です。
*/
} while ( (seek = strtok(NULL,tokn)) != NULL );
}
}
最後に:
・最初の if の『strtok』関数で切り分ける文字列『buff』と区切り文字群『tokn』で最初の数字セルを
取得します。取得後に do-while 部分で数字文字列を整数に変換して2次元配列へセットします。
ここの部分は、質問者さんが実装して下さい。→『atoi』関数で整数変換できるので頑張って下さい。
・次に while の『strtok』関数で続きの切り分ける文字列を取得します。
もしも、カンマやタブ文字が見つからないと NULL を返しますので do-while 文を抜けます。
・これで1行単位で『数字,数字,数字,…,数字』という CSV 形式のデータを2次元配列にセットできます。
・上記のはあくまでサンプルですので、2次元配列へのセット部分は hira1234 さんが記述して下さい。
参考URL:http://www9.plala.or.jp/sgwr-t/lib/strtok.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
テキストファイルから文字列を読み込んで二次元配列に格納するには
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
プログラムによく出てくるst...
-
C#でstringをポインタとして渡す
-
_tcscpy_s(wcscpy_s)の第二引数...
-
C++で文字列の右端から特定の文...
-
VBを2008を用いてCSVを取り込む...
-
VBA-DLLの引数受け渡しについて
-
WSH(VBS)でJSONの文字列を読み...
-
シリアル通信で0x00を送信した...
-
C言語の勉強しています。すみま...
-
アルファベットの出て来た回数
-
文字コードによる表記
-
char型配列の最大要素数
-
C言語 配列の長さの上限
-
C言語のポインタに直接アドレス...
-
関数から配列を返すには?
-
MFC - ダイアログボックスのPic...
-
DataGridViewでのソート制御
-
C# DataGridView のヘッダーセ...
-
System.IO.Directory.GetFiles...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムによく出てくるst...
-
C#でstringをポインタとして渡す
-
nullと""、\\0とEOFの違いにつ...
-
C++で入力した文字列から数字を...
-
WSH(VBS)でJSONの文字列を読み...
-
%dなどの違い
-
シリアル通信で0x00を送信した...
-
TCL言語で文字列検索方法を教え...
-
c#で他のアプリの文字入力フォ...
-
VB6.0でのバイナリデータの扱い...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
16進数を2文字ずつ配列に格納し...
-
数字の入った配列をファイルへ...
-
C++で文字列の右端から特定の文...
-
アルファベットの出て来た回数
-
VBA-DLLの引数受け渡しについて
-
アルファベットをカウント、
-
バイナリファイル中の日本語文...
-
Shift_JIS(16進)を文字に変換す...
-
AnsiStringについて
おすすめ情報