ファイルのコピーが上手くいきません。
Posted: 2006年12月21日(木) 16:23
ファイルをコピーするプログラムを作りましたが上手く動作しません。
(コピーしたファイルの内容が変ってしまいます。)
プログラムを以下に示します。
#include <stdio.h>
main(argc,argv)char *argv[/url];
{
FILE *fin;
FILE *fout;
int c;
fin = fopen(argv[1],"r");
fout = fopen(argv[2],"w");
if(fin == NULL)
{
printf("入力ファイル[%s]がオープンできません。\n",argv[1]);
exit(1);
}
if(fout == NULL)
{
printf("出力ファイル[%s]がオープンできません。\n",argv[2]);
exit(1);
}
while((c=getc(fin)) != EOF)
{
putc(c,fout);
putchar(c);
}
fclose(fin);
fclose(fout);
}
上のプログラムに以下の3行のデータファイルを読ませて、画面表示と新しいファイルへの書き出しをさせました。
abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnop
zzzzzzzzzzzzzzzzzzzzzzzzzz
実行方法はDOSプロンプトで fcopy in_file out_file としました。
(fcopyは実行ファイルで、in_fileが上記の入力データファイルです。out_fileは画面と同じものをファイル出力させたものです。)
実行の結果、画面には正常に出力されましたが、out_fileの中身が以下のようになりました。
abcdefghijklmnopqrstuvwxyz^M?????????? 愀戀??攀昀最?椀?????????zzzzzzzzzzzzzzzzzzzzzzzzzz^M?
putcharもputcも同じ出力内容になると思ったのですが...、また、どこがおかしいのでしょうか?
(コピーしたファイルの内容が変ってしまいます。)
プログラムを以下に示します。
#include <stdio.h>
main(argc,argv)char *argv[/url];
{
FILE *fin;
FILE *fout;
int c;
fin = fopen(argv[1],"r");
fout = fopen(argv[2],"w");
if(fin == NULL)
{
printf("入力ファイル[%s]がオープンできません。\n",argv[1]);
exit(1);
}
if(fout == NULL)
{
printf("出力ファイル[%s]がオープンできません。\n",argv[2]);
exit(1);
}
while((c=getc(fin)) != EOF)
{
putc(c,fout);
putchar(c);
}
fclose(fin);
fclose(fout);
}
上のプログラムに以下の3行のデータファイルを読ませて、画面表示と新しいファイルへの書き出しをさせました。
abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnop
zzzzzzzzzzzzzzzzzzzzzzzzzz
実行方法はDOSプロンプトで fcopy in_file out_file としました。
(fcopyは実行ファイルで、in_fileが上記の入力データファイルです。out_fileは画面と同じものをファイル出力させたものです。)
実行の結果、画面には正常に出力されましたが、out_fileの中身が以下のようになりました。
abcdefghijklmnopqrstuvwxyz^M?????????? 愀戀??攀昀最?椀?????????zzzzzzzzzzzzzzzzzzzzzzzzzz^M?
putcharもputcも同じ出力内容になると思ったのですが...、また、どこがおかしいのでしょうか?