ファイル入出力1

課題1

下記のプログラムをfile1.cとして書き、実行結果の通り正しく実行されるか 確認せよ。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE *fout;
  int	c;

  if((fout=fopen("file1.txt", "w")) == NULL){
    printf("出力ファイルをオープンできません。\n");
    exit(1);
  }

  printf("好きな文字を入力してください。\n");
  printf("入力の終了時には  Ctl+d  を入力してください。\n");
  while ((c=getchar()) != EOF){
    putc(c, fout);
  }

  fclose(fout);

  exit(0);
}
(実行結果)
hp3225[susaki]502:~/program% ./a.out
好きな文字を入力してください。
入力の終了時には  Ctl+d  を入力してください。
aaaa
bbbbbbbbbbbbb
cccccc
dddddddd
eeee
hp3225[susaki]503:~/program% 
hp3225[susaki]503:~/program% cat file1.txt
aaaa
bbbbbbbbbbbbb
cccccc
dddddddd
eeee

課題2

課題1において作成したファイルfile1.txtから文字列を読み込んで、 その文字列を"printf()"で画面出力させたい。 *******で隠された部分を補ってfile2.cとして保存し、 実行結果の通り正しく実行されるか確認せよ。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE *fin;
  char	c[256];

  if((fin=fopen("file1.txt", "r")) == NULL){
    printf("入力ファイルをオープンできません。\n");
    exit(1);
  }

  printf("file1.txtの内容:\n");
  while (*****************************){
    printf("%s",c);
  }

  fclose(fin);

  exit(0);
}
(実行結果)
hp3225[susaki]505:~/program% ./a.out
file1.txtの内容:
aaaa
bbbbbbbbbbbbb
cccccc
dddddddd
eeee
hp3225[susaki]506:~/program% 

課題3

下記のプログラムをfile3.cとして書き、実行結果の通り正しく実行されるか 確認せよ。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE *fout;
  int	dat;

  if((fout=fopen("file3.txt", "w")) == NULL){
    printf("出力ファイルをオープンできません。\n");
    exit(1);
  }

  printf("好きな数字を入力してください。\n");
  printf("入力の終了時には  Ctl+d  を入力してください。\n");
  while (scanf("%d", &dat) != EOF){
    fprintf(fout,"%d\n",dat);
  }

  fclose(fout);

  exit(0);
}
(実行結果)
hp3225[susaki]507:~/program% ./a.out
好きな数字を入力してください。
入力の終了時には  Ctl+d  を入力してください。
21
78
42
93
76
hp3225[susaki]508:~/program% 
hp3225[susaki]508:~/program% cat file3.txt
21
78
42
93
76
hp3225[susaki]509:~/program% 

課題4

課題3で作成したファイルfile3.txtから数字を読み込んで、 その数字の3倍の値をfile4.txtに出力したい。 *******で隠された2箇所を補って、実行結果の通り正しく実行されるか確認せよ。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE *fin, *fout;
  int	dat;

  if((fin=fopen("file3.txt", "r")) == NULL){
    printf("入力ファイルをオープンできません。\n");
    exit(1);
  }

  if((fout=fopen("file4.txt", "w")) == NULL){
    printf("出力ファイルをオープンできません。\n");
    exit(1);
  }

  while (****************************){
    ********************************
  }

  fclose(fin);
  fclose(fout);

  exit(0);
}
(実行結果)
hp3225[susaki]510:~/program% ./a.out
hp3225[susaki]511:~/program% 
hp3225[susaki]511:~/program% cat kadai24-4.txt
63
234
126
279
228

課題5

課題1で作成したファイルfile1.txtから文字列を読み込んで、その文字列を file5.txtに出力したい。ただし、実行結果のように、出力時には行間には1行空 白を入れるものとする。プログラムをfile5.cとして作成し、実行結果のように 動作することを確認せよ。

(実行結果)
hp3225[susaki]513:~/program% ./a.out
hp3225[susaki]514:~/program% 
hp3225[susaki]514:~/program% cat file5.txt
aaaa

bbbbbbbbbbbbb

cccccc

dddddddd

eeee

hp3225[susaki]515:~/program% 

須ア純一 京都大学大学院 工学研究科社会基盤工学専攻 空間情報学講座
[C言語 演習問題トップページ] [須ア純一ホームページ]