#include <stdio.h>
#include <stdlib.h>

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

