
【C&C++】指定行のみファイル書き込み
先ほどの質問に答えてくれた方ありがとうございましたm(_ _)m
後日(明日?)改めてお礼を書かせていただきます。
次の質問なのですが、(csv)ファイルを読み込み指定した行だけ(csv)ファイルに書き込むやり方です。
ファイルの内容は「文字列(1),文字列(12),数値(9),文字列(30)」となっており
0,000000000000,000000000,あああ
1,111111111111,111111111,いいいいい
2,222222222222,222222222,ううう
0,333333333333,333333333,えええええええええええええええ
のように並んでいます。
このとき、最初の文字列が'0'の時のみファイルに書き込むにはどのような処理を行えばよいのでしょうか?
どうかよろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
念のため
>書いてある条件下限定なら 上の部分を
と書きましたが
>ファイルの内容は「文字列(1),文字列(12),数値(9),文字列(30)」となっており
この数字部分がバイト数だとした場合の話です(サンプル見る限りではバイト数と判断しました)
文字数だったらsの配列不足csvファイルの内容次第でまともに動かない条件が発生します
(1文字 = 1バイトではないということを理解してれば判る話)
その辺りは自分で治してください
No.3
- 回答日時:
>while( ( ret = fscanf( fp, "%[^,],%d,%d,%f,%f", s, &n1, &n2, &f1, &f2 ) ) != EOF ){
>if (s == "test01"){
^^^^^^^^^^^^^^^^^^
>printf( "%s,%d,%d,%f,%f", s, n1, n2, f1, f2 );
>}
書いてある条件下限定なら 上の部分を
while( fgets( s, sizeof(s), fp ) != NULL) ){
>if (s[0] == '0'){
>printf( "%s", s );
>}
で十分のはず
書いてある条件外の条件が入ると色々問題箇所があります
>if (s == "test01"){
(C++ではあり得ますが)少なくても C の構文として
この条件に引っかかることはあり得ないはずです
strcmp関数を使うなどしてください
No.1
- 回答日時:
>次の質問なのですが、(csv)ファイルを読み込み指定した行だけ(csv)ファイルに書き込むやり方です。
どのような処理をするか、さっき投稿されている質問とまったく同じだと思うんですけど、
どこら辺で困っているのかを具体的に補足にどうぞ。
この回答への補足
csvファイル「comma.csv」の内容
test01,10,11,1.0,1.1
test02,20,21,2.0,2.1
test03,30,31,3.0,3.1
これは参考にしたどこかのサイトのもので、ファイル出力ではなく標準出力のやつなんですが、
#include <stdio.h>
int main(void)
{
FILE *fp;
char *fname = "comma.csv";
char s[100];
int ret, n1, n2;
float f1, f2;
fp = fopen( fname, "r" );
if( fp == NULL ){
printf( "%sファイルが開けません\n", fname );
return -1;
}
while( ( ret = fscanf( fp, "%[^,],%d,%d,%f,%f", s, &n1, &n2, &f1, &f2 ) ) != EOF ){
printf( "%s,%d,%d,%f,%f", s, n1, n2, f1, f2 );
}
fclose( fp );
return 0;
}
というソースに、if文で最初の文字列指定すればその列だけ出るのかなと思って下のように試してみたんですが何にも出力されなくなってしまいました。どのようにすればよいのでしょう?
#include <stdio.h>
int main(void)
{
FILE *fp;
char *fname = "comma.csv";
char s[100];
int ret, n1, n2;
float f1, f2;
fp = fopen( fname, "r" );
if( fp == NULL ){
printf( "%sファイルが開けません\n", fname );
return -1;
}
while( ( ret = fscanf( fp, "%[^,],%d,%d,%f,%f", s, &n1, &n2, &f1, &f2 ) ) != EOF ){
if (s == "test01"){
^^^^^^^^^^^^^^^^^^
printf( "%s,%d,%d,%f,%f", s, n1, n2, f1, f2 );
}
}
fclose( fp );
return 0;
}
お忙しいでしょうがどなたかお願いしますm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
Access2010の最適化設定について
-
vba ActiveSheet.pasteを使った...
-
ダイアログボックスで複数フォ...
-
fopenの"r+"モードで同時に読み...
-
ファイルの結合
-
マスタとファイルの違いって?
-
テキストファイルの最終行を削...
-
RPGでファイル名(もしくはレコ...
-
Cでのネットワークファイルの読...
-
ドラッグアンドドロップでファ...
-
.eml形式のファイル
-
C言語のfopenについて教えてく...
-
2つのCSVファイルの比較
-
ファイルクローズとメモリ使用...
-
BLOCK構造体とFORTRAN
-
fopenできる上限の変更
-
SGファイルって何ですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
VB.NETによるプロセス間通信
-
営業秘密の漏洩について
-
Thunderbirdでemlファイルを開...
-
ドラッグアンドドロップでファ...
-
CSVファイルへの保存の際、デー...
-
バッチで118項目のCSVを処理し...
-
SGファイルって何ですか?
-
ファイルの結合
-
分割コンパイルの#defineについて
-
VBAにてEXCEL以外のファイル(テ...
-
2つのCSVファイルの比較
-
ShellExecuteEx→WaitForSingleO...
-
VBに、Cのincludeのようなもの...
-
RPGでファイル名(もしくはレコ...
-
マウスポインタの変更
-
Excelマクロでの再読込み方法
-
関数の呼び方について
おすすめ情報