キーボードから入力した文字列を、(改行と空白を含めて)そのままファイル "sample.txt" に出力するプログラムを作成せよ。
条件として、
1.キーボードから入力する際には、標準関数 getc() を用いる
2.入力の終了は、[RET] を2回繰り返すことで指示する
こととする。
また 、上記のファイル "sample.txt" を読み取り、その各行に行番号を付けて再び "sample.txt" に出力するプログラム を作成せよ。
というもので、一応プログラムを書いてみたのですが、どちらも思った通りに動きません。
一つ目のプログラムは実行すると、一番初めにキーボードから入力した文字の前にaが入ってしまいます。
二つ目のプログラムは実行すると、一つ目のプログラムで入れたsample.txtの内容は入っておらず、行番号のみが上限まで入っています。
二つ目のプログラムは最初のfor文の中のbreak文が間違っていると思います。
s[n]に入る文字列が連続して空白の場合に、breakするようにしたいのですが、どう書いたらいいのかさっぱり分かりません。
アドバイスよろしくお願いします。
読みにくい文章とプログラムで申し訳ありません。
一つ目のプログラム
#include <stdio.h>
int main(void){
FILE *fp; char c,d;
fp = fopen("sample.txt","w");
do{
d = c;
putc(c,fp);
}while((c=getc(stdin))!='\n'||d!='\n');
}