「tmpout」という名前のファイルの内容を読み込み、「out.txt」という名前のファイルに内容を書き出したいです。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
チアゴアルカンタラ

「tmpout」という名前のファイルの内容を読み込み、「out.txt」という名前のファイルに内容を書き出したいです。

#1

投稿記事 by チアゴアルカンタラ » 8年前

ubuntuのvirtual box を使用しています。
プログラムはこんな感じです。

コード:

#include <stdio.h>
#include <string.h>
#define MAXLEN 256
#define OUTFILE "out.txt"

int main(int argc, char *argv[]){
  FILE *fp, *fpout, *tmpout;
  char s[MAXLEN];
  // ここへ必要な変数宣言を適宜追加

  if (argc != 2){
    printf("Usage: %s <file>\n", argv[0]);
    return 1;
  }
  if ((fp = fopen(argv[1], "r")) == NULL){
    printf("Cannot open file: %s\n", argv[1]);
    return 1;
  }
  if ((fpout = fopen(OUTFILE, "w")) == NULL){
    printf("Cannot open file: %s\n", OUTFILE);
    return 1;
  }
  while (fgets(s, MAXLEN, fp) != NULL){
    if (strlen(s) == 1){ // 空行
      // ここへ必要な処理を適宜追加
    
      continue;
    }

    // ここへ必要な処理を適宜追加
    
      }
  fclose(fp);
  fclose(fpout);
}
コメントアウトされた指示の部分だけ書き加えてプログラムを完成させたいのですが、ファイルの入出力をこのプログラムにどう組んだらいいかわからず苦しんでいます。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 「tmpout」という名前のファイルの内容を読み込み、「out.txt」という名前のファイルに内容を書き出したい

#2

投稿記事 by みけCAT » 8年前

  • ファイルを開く
  • ファイルを読み込む
  • ファイルを閉じる
という処理はすでにありますね。
入力の内容をそのまま出力したいなら、2つの「ここへ必要な処理を適宜追加」の場所両方にそれぞれ

コード:

fputs(s, fpout);
を入れればいいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

チアゴアルカンタラ

Re: 「tmpout」という名前のファイルの内容を読み込み、「out.txt」という名前のファイルに内容を書き出したい

#3

投稿記事 by チアゴアルカンタラ » 8年前

なるほど、fpではなくfpoutなんですね。ありがとうございます。
追記なんですが「tmpout」の内容は
(1,8) dist=8.062258
(2,6) dist=6.324555
(5,3) dist=5.830952
(4,2) dist=4.472136
(8,9) dist=12.041595

(4,2) dist=4.472136
(5,3) dist=5.830952
(2,6) dist=6.324555
(1,8) dist=8.062258
(8,9) dist=12.041595
となっているのですが、このとき「out.txt」には、
(4,2)
(5,3)
(2,6)
(1,8)
(8,9)
のみ表示したいのですがその方法ってわかりますか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 「tmpout」という名前のファイルの内容を読み込み、「out.txt」という名前のファイルに内容を書き出したい

#4

投稿記事 by みけCAT » 8年前

完全な仕様がわからないので確定できませんが、例えば
  • 空行があるまでは出力せず、あった後は出力する
  • 出力するときは、行の最初の空白までの部分のみを出力する
というようにすると、条件を満たせそうですね。

実装例
► スポイラーを表示
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

チアゴアルカンタラ

Re: 「tmpout」という名前のファイルの内容を読み込み、「out.txt」という名前のファイルに内容を書き出したい

#5

投稿記事 by チアゴアルカンタラ » 8年前

その処理は、if(strlen(s)==1){
}
の中に書くべきですかね?

チアゴアルカンタラ

Re: 「tmpout」という名前のファイルの内容を読み込み、「out.txt」という名前のファイルに内容を書き出したい

#6

投稿記事 by チアゴアルカンタラ » 8年前

本日は本当にお世話になりました。ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る