【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20667

初心者で ファイル処理の質問
投稿者---しょう(2005/04/18 23:32:45)


name0=100  name0=110
base0=123   base0=135
name1=110   name1=100
base1=104    base1=451
name2=120    name2=120
base2=340    base2=333

左のような情報が入ったファイルと右のような情報の入ったファイルがふたつあって、右と左のファイルを比べて
右からnameが100の部分を探して、そのしたのbaseの部分の値を
左のnameが100の部分の下のbase部分に貼り付けたいんです。
言ってる意味わかるかな。
実行結果として
name0=100  
base0=451
name1=110
base1=135
name2=120
base2=333
って感じになるようにしたいんですけど、出来るかな?
ってその前に言ってる意味わからないですよね^^;


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:初心者で ファイル処理の質問 20668 Blue 2005/04/19 00:19:20
<子記事> Re:初心者で ファイル処理の質問 20679 RiSK 2005/04/19 22:36:38


No.20668

Re:初心者で ファイル処理の質問
投稿者---Blue(2005/04/19 00:19:20)


>って感じになるようにしたいんですけど、出来るかな?
できますが、どこが具体的にわからないのでしょうか?

  1. 右のファイルを読み込む(nameとbaseで関連付けしておく)
  2. 左のファイルを読み込む
  3. 1.のファイルの情報を使って2.のデータを書き換える
  4. 3.のデータを左のファイルに上書きする
それと 【掲示板ご利用上の注意】は読んでくださいね。 環境がさっぱりわかりませんよ。




この投稿にコメントする

削除パスワード

No.20669

Re:初心者で ファイル処理の質問
投稿者---しょう(2005/04/19 00:43:02)


<ol>
<li>右のファイルを読み込む(nameとbaseで関連付けしておく)
<li>左のファイルを読み込む
<li>1.のファイルの情報を使って2.のデータを書き換える
<li>3.のデータを左のファイルに上書きする

nameとbaseで関連付けしておくってどういう事なんでしょうか?
ファイルの情報を使って、2のデータを書き換える。
具体的にどういう関数を使えばいいのでしょうか?


環境Windows2000 で Microsoft Visual Basic 6.0を使ってます。



この投稿にコメントする

削除パスワード

No.20670

Re:初心者で ファイル処理の質問
投稿者---Blue(2005/04/19 00:54:30)


VBですか?
ここはC言語掲示板なんですが。。。

関連付けは構造体かなんかをつくってそれを動的配列(コレクションでもいいけど)
で持つようにすればいいのでは?

>具体的にどういう関数を使えばいいのでしょうか?
関数はファイル系のしか使わないポイけど。



この投稿にコメントする

削除パスワード

No.20679

Re:初心者で ファイル処理の質問
投稿者---RiSK(2005/04/19 22:36:38)


>左のような情報が入ったファイルと右のような情報の入ったファイルがふたつあって、右と左のファイルを比べて
>右からnameが100の部分を探して、そのしたのbaseの部分の値を
>左のnameが100の部分の下のbase部分に貼り付けたいんです。

>実行結果として
>name0=100  
>base0=451
>name1=110
>base1=135
>name2=120
>base2=333
左のファイル data1.txt
name0=100
base0=123
name1=110
base1=104
name2=120
base2=340

右のファイル data2.txt
name0=110
base0=135
name1=100
base1=451
name2=120
base2=333

#include <stdio.h>
#define N 3
typedef struct {
    int name, base;
} INFO;
int main(void)
{
    FILE * f1, * f2;
    int name_n, base_n, i;
    INFO tmp, info[N] = {0};
    if ((f1 = fopen("data1.txt", "r")) == NULL) return 1;
    if ((f2 = fopen("data2.txt", "r")) == NULL) {fclose(f1); return 1;}
    while (fscanf(f2, " name%d=%d base%d=%d", &name_n, &tmp.name, &base_n, &tmp.base) == 4
        && name_n == base_n
        && name_n < N) info[name_n] = tmp;
    while (fscanf(f1, " name%d=%d base%d=%*d", &name_n, &tmp.name, &base_n) == 3
        && name_n == base_n) {
        printf("name%d=%d\n", name_n, tmp.name);
        for (i = 0; i < N && tmp.name != info[i].name; ++i)
            ;
        if (i == N) {
            printf("base%d=not found. and break.\n", base_n);
            break;
        }
        printf("base%d=%d\n", base_n, info[i].base);
    }
    fclose(f1);
    fclose(f2);
    return 0;
}



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧