CまたはC++で、データごとにタブで区切られたテキストファイルを読み込む処理があります。
例)
項目1(タブ)fea 5310 a(タブ)2009(改行)
項目2(タブ)dc 6307(タブ)2012(改行)
項目3(タブ)beaf 23 t(タブ)2010(改行)
fscanf で読み込もうとしたのですが、タブとスペースが同じように扱われてしまうようで、
スペースが含まれるデータがある場合、上手く読み込めませんでした。
結局、fgets で一行ずつ一時バッファに読み込んでから一文字ずつチェックして
データごとに切り分けたのですが、釈然としません。
もっと簡潔な方法はないでしょうか?
No.2ベストアンサー
- 回答日時:
don_go 様
ご回答ありがとうございます。
こちらも処理コストは増えてしまいそうなのですが、
非常に簡潔に既述できたのでベストアンサーとさせて頂きます。
ありがとうございました!
struct RECORD Records[1024];
char line[256];
int cnt = 0;
while(fgets(line, sizeof(line), fp)) {
strcpy(Records[cnt].sNumber, strtok(line, "\t"));
strcpy(Records[cnt].sItemCode, strtok(NULL, "\t"));
strcpy(Records[cnt].sRegDate, strtok(NULL, "\t"));
cnt++;
}
No.1
- 回答日時:
>結局、fgets で一行ずつ一時バッファに読み込んでから一文字ずつチェックして
データごとに切り分けたのですが、釈然としません。
strchrを使うというのはどうですか
wormhole 様
ご回答ありがとうございます。
現在の処理が、文字のチェックとコピーを同一のループ内で行っておりますので、
strchr でチェック ⇒ (NULLポインタチェック) ⇒ 一つ前の文字までコピー、となると、処理コストが増えてしまいそうな点が残念です。
しかし、ライブラリ関数を使うことで開発効率や見通しの良さでのメリットはありますし、
いずれ使う機会がある便利な関数だと思います。教えて頂きありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- Chrome(クローム) 最近のGoogle Chromeのデータ読み込みの遅延やエラーって頻発しますか? 2 2023/01/06 22:12
- OCNモバイルONE 読み取ったQRコード/バーコードの履歴、はどこに? 読み取ったQRコード/バーコードの履歴は、〝画面 1 2023/02/06 10:20
- タブレット パソコンから液タブと液晶に同じ画面を出したいのですが・・ 1 2023/01/18 16:53
- Windows 10 再起動後 Pinが使用できず、PC(windows11)にサインインできない 3 2022/08/30 20:53
- Chrome(クローム) Chromeで複数タブを開いた状態で閉じ、再度開いた場合のタブの回復は? 2 2022/04/02 01:44
- その他(パソコン・周辺機器) 適切なペンタブ(液タブ)を購入する方法が分かりません。 3 2023/06/24 10:44
- iPad メモリが16GBのipad proの使い心地は? 1 2022/11/30 11:27
- その他(ソフトウェア) 時間差でのオートクリック 1 2023/04/12 12:04
- UNIX・Linux sedでの正規化 2 2022/05/10 11:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で特定の行を抽出する方法...
-
VBAのFileFormatで悩んでいるこ...
-
全角と半角文字が混在している...
-
Arduino Excel
-
空白文字 \\f と\\v の違いに...
-
Edge スクレイピング
-
【エクセル】改行無しテキスト...
-
htaccessで特定のディレクトリ...
-
VBAでタブ区切りテキストの保存...
-
awkスクリプトでダブルクォーテ...
-
ListBoxのデータを高速でファイ...
-
ExcelをCSV書き出す場合のシー...
-
window.open でのファイル指定方法
-
パスから最後のディレクトリだ...
-
fgets で値が取得できない
-
ReadLineでの読み出し行を指定する
-
CSVデータの編集の際の重複チェ...
-
ファイル出力の改行コードをLFに
-
ifstream を利用した1行分のテ...
-
vba dir の相対パス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルの作り方(CSV→...
-
htaccessで特定のディレクトリ...
-
【エクセル】改行無しテキスト...
-
Edge スクレイピング
-
タブの色を変更する方法
-
C言語で特定の行を抽出する方法...
-
全角と半角文字が混在している...
-
【Access2003】VBAでタブ区切り...
-
デルファイ TabControl タブの...
-
空白文字 \\f と\\v の違いに...
-
Excelのマクロで改行を含んだテ...
-
テキストファイル(tsv)を改行...
-
C++でファイルから複数行のデー...
-
VB6でのデータの編集(ファイル...
-
VBAでタブ区切りテキストの保存...
-
VBAのFileFormatで悩んでいるこ...
-
\\tはどんなときに使うのでしょ...
-
タブコントロールに付いて
-
AccessからExcelをタブ指定で開...
-
はじめまして。よろしくお願い...
おすすめ情報