Vous devez vous connecter pour exécuter votre code.
Est palindrome sur fichier (B 5.7)
B 5.7 — Écrivez une fonction qui teste si le contenu d'un fichier binaire d'entiers forme un palindrome (identique dans les deux sens).
#include <stdio.h>
int is_file_palindrome(const char *filename) {
FILE *f = fopen(filename, "rb");
if (f == NULL) return -1;
fseek(f, 0, SEEK_END);
long n = ftell(f) / sizeof(int);
if (n < 0) { fclose(f); return -1; }
for (long i = 0; i < n / 2; i++) {
int left, right;
fseek(f, i * sizeof(int), SEEK_SET);
fread(&left, sizeof(int), 1, f);
fseek(f, (n - 1 - i) * sizeof(int), SEEK_SET);
fread(&right, sizeof(int), 1, f);
if (left != right) { fclose(f); return 0; }
}
int err = ferror(f) ? -1 : 1;
fclose(f);
return err;
}
int main(int argc, char *argv[]) {
if (argc < 2) { printf("-1\n"); return 1; }
printf("%d\n", is_file_palindrome(argv[1]));
return 0;
}