C言語関係掲示板

過去ログ

No.244.ファイルデータを構造体を使って読み込み処理する方法


No.1478

ファイルデータを構造体を使って読み込み処理する方法について
投稿者---おしん(2002/05/08 15:25:54)


初めて投稿させていただきます。

初歩的な質問ですが、ファイルからデータを読み込み、
別ファイルへ書き込む処理を以下のような方法で行っています。
(知り合いに教えてもらったやり方です)

読み込んだデータの内容により処理を分けたりするので、
いったん中身を別変数に代入し後の処理で使用しています(省略)
動作はするのですが、いちいち変数の空文字を付加する処理
を行うために、コーディング量も多く、あまりいい書き方で
はないのでは、と思っています。
このような処理を行う際には、どういった方法が一般的なのでしょうか。

初歩的な質問ですが、どうぞよろしくお願いいたします。



--ファイル--

AABBBCCCC
DDEEEFFFF
GGHHHIIII





--読み込むファイルの構造体宣言--

Struct Kata{
field1 char[2];
field2 char[3];
field3 char[4];
} Data;


---ファイルオープン等は省略--
void Test(struct Kata Data,FILE *fp_input,FILE *fp_output)
{
char buf[32];

while(!feof(fpi)){
fread(&Data,sizeof(struct Kata),1,fp_input);

strncpy(buf,Data.field1,2);buf[2]='\0';

if(strcmp(buf2,"aa")==0){
処理1
}else{
処理2
}
fprintf(fp_output,"[%s]\n",buf);
}
}




No.1481

Re:ファイルデータを構造体を使って読み込み処理する方法について
投稿者---かずま(2002/05/08 23:00:33)


#include <stdio.h>
#include <string.h>

struct Kata {
    char field1[2];
    char field2[3];
    char field3[4];
};

void Test(FILE *fp_input, FILE *fp_output)
{
    struct Kata Data;

    while (fread(&Data, sizeof(struct Kata), 1, fp_input) == 1) {
        if (memcmp(Data.field1, "aa", 2) == 0) {
            /* 処理1 */
        } else {
            /* 処理2 */
        }
        fprintf(fp_output, "[%.2s]\n", Data.field1);
    }
}

int main()
{
    Test(stdin, stdout);
    return 0;
}
----------------------------------------------------------------------
入力:
    AABBBCCCCDDEEEFFFFGGHHHIIII
出力:
    [AA]
    [DD]
    [GG]


戻る


「初心者のためのポイント学習C言語」 Last modified:2002.06.22
Copyright(c) 2000-2002 TOMOJI All Rights Reserved