テキストファイル名を引数にとり
そのテキストファイルの中身を temp.txt という
テキストファイルにコピーする
というプログラムを作りました。
下にソースコードを記します。
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[]){
FILE *from; //コピー元//
FILE *to; //コピー先//
char ch;
if(argc!=2){
printf("<プログラム名><テキストファイル名>\n");
printf("このように記してください\n");
exit(1);
}
if((from = fopen(argv[1],"r")) == NULL ){
printf("ファイルを開くことができませんでした\n");
exit(1);
}
if((to = fopen("temp.txt","w+")) == NULL ){
printf("ファイルを開くことができませんでした\n");
exit(1);
}
while(!feof(from)){
ch = fgetc(from);
fputc(ch,to);
}
fclose(from);
fclose(to);
return 0;
}
(a.txt の中身は abcdefg という文字列)
temp.txt の中身が abcdefg・となりました。
・という記号はEOF前の最後のヌル文字か何かを
読み込んだのかなと考えています(全く自信はないですが)
いったいこの記号は何を読み込んだものなのでしょうか?
というかテキストファイルに文字を書き込んで保存するときに
最後にいったい何が記されているのでしょうか?(見えない形で)
またこのプログラムを作るにあたって疑問に思ったことを質問させてください。
・ fgetc関数は戻り値を何かの変数に代入しない限り、先に進まないのでしょうか?(一時停止状態になるのでしょうか?)
テキストファイルのバイト数は調べるためにfgetc関数の読み込む位置を前に進めるという機能だけ使おうとして
何も戻り値を変数に代入しなかったら、プログラムが途中で止まった(エラーというわけではない…と思います)
ので疑問に思いました
・ ソースコードを書き換えて上書き保存してからコマンドプロンプトで実行しているのに、前のソースコードの結果がでてしまうことがある。
良ければ具体的にこういう手順を踏んでいるから、前のソースコードの結果が出てしまうんだよ ということをお教えください。
以下の三点について教えてください、お願いします。
OS は windows7
EasyIDECという統合開発環境を使用しています。