fscanfを使えば書式付でファイルを読み込めるのは分かっているのですが、例えば、次のようなファイルがあったとして、
ファイルA
1行目:192.168.5.4
2行目:165.85.465.23
・
・
・
10行目:65.23.45.6
この2行目だけを書式付で読み込ませたりなど特定の行を読み込ませるにはどうしたらよいでしょうか?
また、10個のデータがあったとして、1行目にこのデータを書き込み、次のデータを2行目・・・などとする方法も教えてください。できれば、軽い解説や参考URLなどがあると助かります。
No.3ベストアンサー
- 回答日時:
固定長なら可能です。
具体的にはIPアドレスを0埋めします
192.065.023.054
としていれば2行目が何バイト目から始まるのかがわかるので
fopenならbinaryでオープンしてfseekで移動し、
そこから2行目の先頭から読み込み書込みが可能です。
しかし
1行目:192.168.5.4
2行目:165.85.465.23
のような可変長では2行目は何バイト目からはじまるか決まっていません。
1.1.1.1(7文字)なら7バイト+改行コードcrlf(2バイト)で
10バイト目が2行目ですが、1行目が
10.10.10.10(11文字)かもしれませんし255.255.255.255(15文字)かもしれません。
挿入も不可能です。
なぜなら、3行目以降がすべてずれこんでしまう可能性があるためです。
ですからこの場合はシーケンシャルサーチ(先頭から順番に読み込む)しか
ありません。
No.2
- 回答日時:
> また、10個のデータがあったとして、
> 1行目にこのデータを書き込み、次の
> データを2行目・・・などとする方法も
> 教えてください。
この質問については意味がよく分かりません。
「このデータを書き込み」の「この」は何を
指しているんですか?
というか、何をしたいんでしょうか?
ファイルAの1行目を削除したいということ?
この回答への補足
すいません、説明不足でしたので補足します。
例えば、
ファイルA
192.1.2.3(1行目)
192.65.23.54(2行目)
・
・
・
上記のファイルAにIPアドレスが10個あったとして、それを上から順に読み込ませるのではなく、3行目からいきなり読み込ませたりすることができないかというのがまず一つ目の質問で、二つ目の質問がプログラムの処理で
100.56.2.3
12.3.4.6
・
・
・
などのように10個のデータを作ったとして、それをファイルBに書き込ませたいのですが、
ファイルBに
100.56.2.3
12.3.4.6
・
・
・
というふうにIPアドレスを1行ずつ書き込ませる方法を教えていただきたいのですがよろしくお願いします。
No.1
- 回答日時:
fscanf() を使うよりも fgets() を使って1行づつカウントしながら読み込んで、カウントが目的の値になったら sscanf() でフォーマットに従って変数に入れた方が良いと思います。
例)
FILE *fp;
char buf[100];
int count = 0, a, b, c, d;
if ((fp = fopen("testfile.txt", "r")) == NULL) {
perror(NULL);
exit(1);
}
while (fgets(buf, sizeof(buf), fp)) {
count++;
if (count == 2) {
/* 2行目なので処理を書く。 */
/* たとえばこんなのとか */
sscanf(buf, "%d.%d.%d.%d", &a, &b, &c, &d);
printf("%d.%d.%d.%d\n", d, c, b, a);
.
.
.
break; /* ここでは2行目以降は処理しない
* のでループを抜ける。
*/
}
}
fclose(fp);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(プログラミング・Web制作) 【python】Excelファイルを読み込む際の日付の表示形式を任意にする 2 2022/11/24 14:21
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
バイナリエディタのつかいかた
-
EXCEL VBAでテキストファイルの...
-
FMFファイルの構造を知りたいの...
-
C言語
-
Javaでのエンディアン変換
-
HDDのバイナリイメージの取得方...
-
エクセルVBA 2千万行のCSVファ...
-
EOF
-
BMP 仕様
-
BMP画像の画像データ本体をテキ...
-
バイナリーデータの一部データ...
-
C言語とシリアル通信の送受信...
-
ashxに送信したデータが受信時...
-
MacからWinにファイルを添付す...
-
【python】Excelファイルを読み...
-
= (イコール)で始まるセルの値...
-
エンディアンと2の補数表現
-
バイナリ表示されたデータを小...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
EXCEL VBAでテキストファイルの...
-
ページ読み込み時に自動的にsub...
-
エクセルVBA 2千万行のCSVファ...
-
VBA バイナリ―から文字列にす...
-
エラー:ストリームの終わりを...
-
入力ファイルをバイナリにする利点
-
バイナリエディタのつかいかた
-
MacからWinにファイルを添付す...
-
EOF
-
【python】Excelファイルを読み...
-
C言語の質問です。バイナリ形...
-
画像の保存方法。
-
テキストデータをSQLServerに取...
-
バイナリファイルの比較につい...
-
bitmap画像の保存がうまくいき...
-
なぜデータの整合性を確認する...
-
C言語とシリアル通信の送受信...
-
【Teraterm】filewritelnについて
おすすめ情報