C言語関係掲示板

過去ログ

No694 何バイト目からのデータを読む

[戻る] [ホームページ]
No.8141

何バイト目からのデータを読む
投稿者---masayan(2003/07/09 10:17:31)


すいませんが、何バイト目からのデータを読むためにはどうしたらよいですか?
教えてください。環境はunixです。
例)Aのファイルに22バイト目から始まる"hello"を読み取り、ファイルBに
出力したい。

No.8142

Re:何バイト目からのデータを読む
投稿者---nop(2003/07/09 10:23:33)


>すいませんが、何バイト目からのデータを読むためにはどうしたらよいですか?
>教えてください。環境はunixです。
>例)Aのファイルに22バイト目から始まる"hello"を読み取り、ファイルBに
>出力したい。

方法は幾つかあります。
例えば、

1.ファイルの全内容をメモリに読み込み、
  読み込んだメモリ内容のお好みの位置から読み込む

2.fseek() などでファイルポインタの位置を指定位置にずらし、
  読み込み開始位置をずらす

3.先頭から指定位置分までのデータを読み飛ばしてから、
  目的の読み出し処理を行う。

など。
どの方法を使うかは個人個人の趣味趣向に合わせてお選び下さい。

No.8143

Re:何バイト目からのデータを読む
投稿者---masayan(2003/07/09 10:51:35)


ありがとうございます。参考になります。
しかし、初心者の私にはよく使い方がわかりません。参考書でfseekを調べてやってはいるんですが、参考書がやさしすぎて。。。
できればサンプルをいただけたらうれしいです。
>2.fseek() などでファイルポインタの位置を指定位置にずらし、
>  読み込み開始位置をずらす
この2のパターンでやりたいと思っています。あと
補足説明:22バイト目から30バイト目までを指定して読む場合を
教えてください。

No.8145

Re:何バイト目からのデータを読む
投稿者---nop(2003/07/09 11:20:31)


>>2.fseek() などでファイルポインタの位置を指定位置にずらし、
>>  読み込み開始位置をずらす
>この2のパターンでやりたいと思っています。あと
>補足説明:22バイト目から30バイト目までを指定して読む場合を
>教えてください。

こんな感じで如何でしょうか?
後、標準関数の使い方なら「ANSI C 言語辞典」買うなり、
web で検索するなり、いくらでも調べる方法はあるかと思いますが?

/* ファイルポインタを先頭から 22 バイト移動 */
fseek( fp, 22, SEEK_SET );

/* 読み込み (22バイト目から30バイト目まで) */
fgets( buf, 30-22, fp );


No.8188

Re:何バイト目からのデータを読む
投稿者---かずま(2003/07/09 21:21:21)


> 補足説明:22バイト目から30バイト目までを指定して読む場合を
> 教えてください。
#include <stdio.h>

#define OFFSET  22
#define SIZE    (30 - OFFSET + 1)

int main(void)
{
    char buf[1024];  int i, n;  FILE *fp = stdin;

    fseek(fp, OFFSET, SEEK_SET);
    n = fread(buf, 1, SIZE, fp);
    for (i = 0; i < n; i++)
        printf(" %02x", buf[i] & 0xFF);
    printf("\n");
    return 0;
}


No.8147

Re:何バイト目からのデータを読む
投稿者---とおりかかり(2003/07/09 12:00:16)


こんにちは

こうしたときは dd を使うのが吉

参考
man 1 dd


No.8153

Re:何バイト目からのデータを読む
投稿者---masayan(2003/07/09 13:09:42)


皆さんありがとうございます。私の調べ不足だということは反省してます。
おかげでfseek関数できました。ほんとにありがとうございます。
ところで、
>こうしたときは dd を使うのが吉
>参考
>man 1 dd
マニュアルが全部英語なので理解できず、webや過去ログでも探したんですが、
内容が見つかりません。また私の調べ不足だと思いますが、できればdd関数についても知りたいと思っているので、わかる方教えてください。


No.8176

Re:何バイト目からのデータを読む
投稿者---とおりかかり(2003/07/09 15:39:31)


>マニュアルが全部英語なので理解できず、webや過去ログでも探したんで

dd はコマンドです。

LANG=japanese man 1 dd

では? どうです。あなたのUNIXに日本語パッケージ
が入っていたなら日本語で表示されるかもしれません。

もしだめなら

No.8017 のリンク先も参考に

おそらく日本語のddのマニュアルが見つかったとして
次は、
「どんなパラメタを指定してコマンドをきるのですか?」
みたいな追加質問が来るのに10000カノッサ



No.8180

Re:何バイト目からのデータを読む
投稿者---masayan(2003/07/09 16:54:34)


あの・・・
どんなパラメータを指定してコマンドをきるのですか?(汗
頼ってばかりでほんとにすいません。いまいちよく理解できません。
勉強不足ですね。



No.8182

Re:何バイト目からのデータを読む
投稿者---とおりかかり(2003/07/09 19:07:00)


>あの・・・
>どんなパラメータを指定してコマンドをきるのですか?(汗
>頼ってばかりでほんとにすいません。いまいちよく理解できません。
>勉強不足ですね。

あのね、開いた口がふさがりませんが。。

ためしに適当にコマンドをきってみるとか、
検索エンジンとかに関連のページが無いか調べて
みようとか、そういう気も起こらないのでしょうか?

教えてクンとか他人依存症(http://www.k2r.org/malte/sk0428.html)
とか言われてしまう前に、ちーったぁ自分で動かんかいゴラァ! :-)


No.8184

Re:何バイト目からのデータを読む
投稿者---masayan(2003/07/09 19:51:10)


あ!すいません。理解できたことを書くの忘れました。
あの後、調べてなんとか使い方は理解できました。
ありがとうございます。
そして、翻訳機ありがとうございます。こんなのがあるとは知らなかったです

最後に皆さんに一つ聞いてもいいですか?
なんでこんなにいろいろわかるのですか?
自分はまだ初心者ですけど、いつになったら皆さんのようにすぐに
”これはこうする”ってわかるようになるのか、正直恐いです。
やはり、経験とたくさんのプログラムを理解することですか?
あと、順をおってやったほうがいいですか?いきなり難しいのやるのは良くないですか?


No.8186

Re:何バイト目からのデータを読む
投稿者---nop(2003/07/09 21:07:11)


>なんでこんなにいろいろわかるのですか?
>自分はまだ初心者ですけど、いつになったら皆さんのようにすぐに
>”これはこうする”ってわかるようになるのか、正直恐いです。

こういうのは、経験と知的好奇心の賜。
とりあえず『アルゴリズム』を勉強するとよろし。