私は C が初めてで、ファイルの基本を学べるようにファイルをコピーするだけのプログラムを書こうとしていました。私のコードはファイルを入力として取り、fseek と ftell を使用して、ファイルの開始点と終了点を差し引いてその長さを計算します。次に、fwrite を使用して、man ページから取得できるものに基づいて、データの 1 つの要素、(END - START) 要素の長さを、OUT が指すストリームに書き込み、FI によって指定された場所からそれらを取得します。問題は、「コピー出力」は生成されますが、ファイルが元のファイルと同じではないことです。私は何を間違っていますか?入力ファイルを変数に読み込んでから、そこから書き込もうとしましたが、それも役に立ちませんでした。私は何を間違っていますか?ありがとう
int main(int argc, char* argv[])
{
FILE* fi = fopen(argv[1], "r"); //create the input file for reading
if (fi == NULL)
return 1; // check file exists
int start = ftell(fi); // get file start address
fseek(fi, 0, SEEK_END); // go to end of file
int end = ftell(fi); // get file end address
rewind(fi); // go back to file beginning
FILE* out = fopen("copy output", "w"); // create the output file for writing
fwrite(fi,end-start,1,out); // write the input file to the output file
}
これは機能するはずですか?
{
FILE* out = fopen("copy output", "w");
int* buf = malloc(end-start); fread(buf,end-start,1,fi);
fwrite(buf,end-start,1,out);
}