Vous devez vous connecter pour exécuter votre code.
Insertion dans fichier homogène (MD 5.9)
MD 5.9 — Écrivez une fonction qui insère un entier à un indice donné dans un fichier binaire d'entiers. Les éléments suivants doivent être décalés.
#include <stdio.h>
int file_insert_int(const char *filename, long index, int value) {
FILE *f = fopen(filename, "r+b");
if (f == NULL) return -1;
fseek(f, 0, SEEK_END);
long n = ftell(f) / sizeof(int);
if (index < 0 || index > n) { fclose(f); return -1; }
// Décaler les éléments vers la droite
for (long i = n - 1; i >= index; i--) {
int val;
fseek(f, i * sizeof(int), SEEK_SET);
if (fread(&val, sizeof(int), 1, f) != 1) { fclose(f); return -1; }
fseek(f, (i + 1) * sizeof(int), SEEK_SET);
if (fwrite(&val, sizeof(int), 1, f) != 1) { fclose(f); return -1; }
}
// Écrire la nouvelle valeur
fseek(f, index * sizeof(int), SEEK_SET);
fwrite(&value, sizeof(int), 1, f);
int err = ferror(f) ? -1 : 0;
fclose(f);
return err;
}
int main() { return 0; }