77 lines
2.2 KiB
C
77 lines
2.2 KiB
C
#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;
|
|
}
|
|
|
|
size_t read;
|
|
/* réecriture du texte dans le fichier temporaire en remplaçant les points d'interrogation grecs par des points-virgules*/
|
|
while(1){
|
|
read = fread(buffer, sizeof(*buffer),file)
|
|
if("0xCD" || "0xBE")
|
|
if () {
|
|
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;
|
|
}
|
|
|