かれこれ2時間ほど手直しをしています。しかし症状は改善したものの、理想的に動きません。
ソースコードの添削をしていただけませんでしょうか。
演習はfreadとfwriteの2つあり、つながっています。
[演習1]
モード"wb"でオープンしたテキストファイルfwrite.txtに、
①char型の文字列(数字のみ3文字)を1回入力
②int型の数字を3回入力
を標準入力から無制限で受け取り、ファイルに出力プログラムを作成せよ
終了条件は、1回目のint型の数字に100が入力されることとする
↓自分で作ったソースです。
#include<stdio.h>
#include<string.h>
int main(void)
{
char chardata[4];
int intdata[3];
FILE *fp;
fp = fopen("fwrite.txt","wb");
printf("データ入力\n");
printf("char型(数字のみ3文字)を1回入力\n");
printf("int型を3回入力\n");
printf("1回目のint型入力の際,100が入力された時処理終了\n");
while(1)
{
scanf("%s %d %d %d",chardata,&intdata[0],&intdata[1],&intdata[2]);
if(intdata[0] == 100)
{
break;
}
fwrite(chardata,sizeof(char),3,fp);
fwrite(intdata,sizeof(int),3,fp);
}
fclose(fp);
return 0;
}
演習1で作成したfwrite.txtをモード"rb"でオープンし、入力したデータを標準出力に出力させよ
#include<stdio.h>
int main(void)
{
int datai[3];
char datac[4];
FILE *fp;
fp = fopen("fwrite.txt","rb");
while(fread(datac, sizeof(char), 3, fp), !feof(fp))
{
fread(datai, sizeof(int), 3, fp);
printf("%s\n",datac);
printf("%d %d %d\n",datai[0],datai[1],datai[2]);
}
fclose(fp);
return 0;
}
=====入力=====
データ入力
char型(数字のみ3文字)を一回入力
int型を三回入力
1回目のint型入力の際,100が入力された時処理終了
001 10 20 30
002 23 43 65
003 43 43 43
004 54 54 54
005 100 100 100
続行するには何かキーを押してください . . .
==============
[2演習の出力]
=====出力=====
001フフフフフフフフフ
10 20 30
002フフフフフフフフフ
23 43 65
003フフフフフフフフフ+
43 43 43
004フフフフフフフフフ6
54 54 54
続行するには何かキーを押してください . . .
==============
理想の出力では
=====出力=====
001
10 20 30
002
23 43 65
003
43 43 43
004
54 54 54
続行するには何かキーを押してください . . .
==============
となって欲しいです。
よろしくお願いします。