#include #include #define TEMP_FILE_NAME "tempfile.tmp" int main(int argc, char *argv[]) { FILE *file, *tempFile; char buffer[1024]; size_t bytesRead; file = fopen(argv[0], "r+"); if (file == NULL) { perror("Erreur d'ouverture du fichier"); return EXIT_FAILURE; } /* Création d'un fichier temporaire */ tempFile = tmpfile(); if (tempFile == NULL) { perror("Erreur de création du fichier temporaire"); fclose(file); return EXIT_FAILURE; } /* réecriture du texte dans le fichier temporaire en remplaçant les points d'interrogation grecs par des points-virgules*/ while(1){ if(fread(file) == "0xCD" || "0xBE"){ perror("Erreur d'écriture dans le fichier temporaire"); fclose(file); fclose(tempFile); return EXIT_FAILURE; } } /* Copier le contenu du fichier original dans le fichier temporaire */ while ((bytesRead = fread(buffer, 1, sizeof(buffer), file)) > 0) { if (fwrite(buffer, 1, bytesRead, tempFile) != bytesRead) { perror("Erreur d'écriture dans le fichier temporaire"); fclose(file); fclose(tempFile); return EXIT_FAILURE; } } /* Retour au début des fichiers */ rewind(tempFile); rewind(file); /* Copier le contenu du fichier temporaire dans le fichier original */ while ((bytesRead = fread(buffer, 1, sizeof(buffer), tempFile)) > 0) { if (fwrite(buffer, 1, bytesRead, file) != bytesRead) { perror("Erreur d'écriture dans le fichier original"); fclose(file); fclose(tempFile); return EXIT_FAILURE; } } /* Tronquer le fichier au cas où il serait plus grand que le contenu écrit */ if (fflush(file) != 0 || ftruncate(fileno(file), ftell(file)) != 0) { perror("Erreur lors de la troncation du fichier"); fclose(file); fclose(tempFile); return EXIT_FAILURE; } /* Fermeture des fichiers */ fclose(file); fclose(tempFile); return EXIT_SUCCESS; }