Re bonjour à tous,
Grâce à vous mon projet avance à toute vitesse. Je me heurte cependant à un dernier souci:
j'ai un fichier texte en mode binaire qui contient entre autre des caractères accentués. Je dois placer le caractère hexa 0x83 devant chaque caractère accentué
Fonctionnement souhaité: on ouvre le fichier source et on compare chaque caractère à la valeur 0xC0. S'il est supérieur (4 dernières lignes de la table ascii étendue), il s'agit d'un caractère accentué on ajoute au fichier cible le caractère 0x83 puis on poursuit la copie fichier à fichier.
Merci d'avance pour votre aide. Promis c'est la dernière fois que je vous embête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 char precedent=0x00; do { char caractere_lu = fgetc(fichierorigine); //lecture dans le fichier source d'un caractère // Checking for end of file if (feof(fichierorigine)) //sortie de boucle si fin de fichier atteinte break ; // on cherche si le caractère lu est accentué (si son code hexa est sur les 4 dernières lignes de la table ascii étendue) // il faut aussi prévoir le fait qu'on doit pouvoir exécuter plusieurs fois la moulinette sans rajouter à chaque fois le caractèe 0x83 s'il est déjà présent if (caractere_lu>0xC0 && precedent!=0x83) // { fputc(0x83, fichierdestination); //ecriture dans le fichier cible d'un caractère } fputc(caractere_lu, fichierdestination); precedent=caractere_lu; } while(1);
Partager