与えられたバイナリファイルのバイトの順序を逆にするプログラムを書く必要があります。コマンドラインでファイル名を受け入れます。さらに、fseekなどのファイルポジショニング機能を一定回数しか使用できません。
これが私が書いたコードで、一定の回数使用しないものです。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char** argv) {
if (argc>2) {
printf("Please enter a valid file name");
return 1;
} else {
FILE* file;
file=fopen(argv[1], "r");
if (file==NULL) {
printf("Please enter a valid file name");
return 1;
} else {
FILE* fileBackUp;
fileBackUp=fopen("c:\backupFile.txt", "w+");
fseek(file, 0, SEEK_END);
fseek(file, -1, SEEK_CUR);
while (ftell(file)>=0) {
int c= fgetc(file);
fputc(c, fileBackUp);
fseek(file, -2, SEEK_CUR);
}
fseek(fileBackUp, 0, SEEK_SET);
int c;
while (!feof(fileBackUp)) {
c=fgetc(fileBackUp)
fputc(c,file);
}
fclose(fileBackUp);
fclose(file);
}
}
return 1;
}
余分なファイルを使用します。私は確かに、要求されたより少ないステップでそれを行うためのより短いエレガントな方法があると信じています。助言がありますか?
もう一つのこと:最初の条件は常に満たされているようですが、どうしてですか?