Lire un fichier UTF-8 line par line en C
Bonsoir,
Je veux lire un fichier texte ligne par ligne crée par Notepad code en UTF-8, je veux pas afficher les strings, je veux juste lire est compare.
Ce code lire un fichier texte ANSI ligne par ligne est comparer.
Ce que je veux
- Lire test_ansi.txt ligne par ligne
- Si ligne = "b" afficher "YES!"
- Sinon afficher "NO!"
read_ansi_line_by_line.c
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <stdio.h>
int main()
{
char *inname = "test_ansi.txt";
FILE *infile;
char line_buffer[BUFSIZ]; /* BUFSIZ is defined if you include stdio.h */
char line_number;
infile = fopen(inname, "r");
if (!infile) {
printf("\nfile '%s' not found\n", inname);
return 0;
}
printf("\n%s\n\n", inname);
line_number = 0;
while (fgets(line_buffer, sizeof(line_buffer), infile)) {
++line_number;
/* note that the newline is in the buffer */
if (strcmp("b\n", line_buffer) == 0 ){
printf("%d: YES!\n", line_number);
}else{
printf("%d: NO!\n", line_number,line_buffer);
}
}
printf("\n\nTotal: %d\n", line_number);
return 0;
} |
test_ansi.txt
Compiler
Code:
gcc -o read_ansi_line_by_line read_ansi_line_by_line.c
Output
Code:
1 2 3 4 5 6 7 8 9
|
test_ansi.txt
1: NO!
2: YES!
3: NO!
Total: 3 |
Maintenant j'ai besoin de lire un fichier UTF-8 crée par Notepad, âpre plus que 6 mois de recherche sur l'internet, les forums English et Français et Arabe, j'ai trouver tous les réponse de mes question ici (c'est moi FREESAIF), bravo a tous les professionnels de developpez.com :ccool:
Mais jusqu'à aujourd'hui j'ai jamais vu un programme qui bien traiter les informations UTF-8 écrit en C (C99)!, je sais pas exactement pour quoi mais je crois que le Standard C ne support pas Unicode en général alors... un peut difficile!
LE PROBLÈME!
Pour lire fichier UTF-8, j'ai besoin de lire fichier en mode binaire!
Mais comment lire un fichier UTF-8 en mode binaire ?! avec quelle fonctions ?
Sil-vous-plaît quelqu'un connais une méthode plus simple ?
Programme écrit en C (C99) qui lire un fichier texte UTF-8 ligne par ligne est qui compare les caractères.
Merci :)