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; }