テキストファイルから整数データ又は文字列を読み込んで配列に格納する動作についての質問です。
テキストファイルが1行区切りの整数型なら1次元配列で
for(i = 0; i < maxSize; i++)
{
fscanf(fp,"%d", &data[i]); }
テキストファイルが1行区切りの文字列なら2次元配列で
for(i = 0; i < MAXSIZE; i++)
{
if (fscanf(fp,"%s", &data[i][300]) == EOF)
break;
}
for(j = 0; j < i; j++)
printf("%s\n", data[j]);
みたいな具合に格納できたんですが、
テキストファイルが1行区切りのデータではなく、空白文字区切りの文字データだった場合、それぞれどのようにして配列に格納すればいいかがわかりません。
イメージとしては、1文字目から見ていって空白が出ればそこで切って格納していくというかんじなのですが・・・
質問の内容がわかりにくいかもしれませんが、是非教えてください。お願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> テキストファイルが1行区切りの文字列なら2次元配列で
> if (fscanf(fp,"%s", &data[i][300]) == EOF)
2点ほど。
・data[][]の型が書いてないので詳細は不明ですが
これでは、data[i][300]に(または、data[i][300]から)データが入るのでは?
・%sで、というより、scanf系のほとんどの変換子で取り込めるのは、「1行区切り」だけではありません。
スペースもタブも改行も「空白文字」として同じ扱いになります。例外は[]くらい。
> テキストファイルが1行区切りのデータではなく、空白文字区切りの文字データだった場合、それぞれどのようにして配列に格納すればいいかがわかりません。
まずは「どのように格納するのが、後の処理を考えた場合に便利か」を御自身で考えてください。
行→列と分解した方がいい場合、行で格納して列の分解はしない方がいい場合、行も列も関係なく一列に格納した方がいい場合。
また、文字列のまま格納した方がいい場合、整数や実数等の数値に変換した方がいい場合。
扱うデータや後の処理によって最適な方法は違います。
決まったら、それをやるのに便利な方法を考え選択します。
例えば、行→列に分解なら
・fgetsで1行読み込み→strtokで分解
・同→sscanfで個別に変換
・同→自作関数「1文字目から見ていって空白が出ればそこで切って格納」
等があるし、とにかく行関係なく一列に格納するなら fscanfを連続で実行するだけです(上に書いたように、%sや%dは改行と空白の区別がありません)
No.2
- 回答日時:
空白文字が、(いわゆる半角)スペースやタブを意味しているのなら、プログラムは全く変更する必要はありません。
勝手に空白文字で区切ってくれます。
あと、
if (fscanf(fp,"%s", &data[i][300]) == EOF)
は、
if (fscanf(fp,"%s", data[i]) == EOF)
と書かれることが多いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Visual Basic(VBA) vbaのループ処理について 6 2022/05/06 15:35
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# 10人分の生徒の英語の点数{32,34,41,38,40,26,14,46,42,50} と数学の点 2 2022/05/26 21:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
EXCELからCSVにすると余計なカ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
[VBA][Excel]クリップボードか...
-
エクセルで数値を全角文字(カ...
-
データにカンマが入ったCSVデー...
-
カンマ区切りの数字をCSVフ...
-
Excelについて質問です。 セル...
-
メールのcsv添付ファイルの種類...
-
カンマ区切り
-
ひとつの命令を複数行に記述
-
[Word]フィールドの分数表示で[...
-
C#で、テキストボックスの入力...
-
エクセル セルの書式設定 ユ...
-
C#でcsvファイルの列を入れ替え...
-
マクロを使ってフォルダー内に...
-
VBAでtxtファイルを読み込む際...
-
【VBA】エクセルで値のみクリッ...
-
何故、日本は未だに数字を3桁...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
何故、日本は未だに数字を3桁...
-
データにカンマが入ったCSVデー...
-
3桁ごと?4桁ごと?コンマの...
-
[VBA][Excel]クリップボードか...
-
カンマ区切り
-
VBAでtxtファイルを読み込む際...
-
「カンマ」と「コンマ」は同じ...
-
メモ帳からエクセルにセル区切...
-
パス区切りの文字について
-
EXCELの文字が指数になる
-
C#で、テキストボックスの入力...
-
PHP カンマをエスケープしたい...
-
カンマ区切りでないテキストをc...
おすすめ情報