Bonjour
Je cherche a effectuer la lecture d'un fichier écrit en Unicode, ligne par ligne si possible.
Pour le moment, ça ne fonctionne pas.
Voici mon code
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
 
char lireFichier(char *nomFic){
  FILE *fd = fopen(nomFic,"r,ccs=UNICODE");
  wchar_t lig[64];
  wchar_t *res;
  if (fd == NULL){
    return -1;
  }
  res= fgetws(lig,60,fd);
  if (res == NULL){
    wprintf(L"erreur\n");
  }
  wprintf(L"%s",lig);
 
  fclose(fd);
  return 1;
}
A chaque fois, cela m'affiche uniquement un caractere, le premier du fichier...

J'ai essayé autre chose de lire caractere par caractere le fichier (juste le début pour voir).
Cela donnait
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
 
char lireFichier(char *nomFic){
  FILE *fd = fopen(nomFic,"r,ccs=UNICODE");
  wint_t ok;
  int i;
  if (fd == NULL){
    return -1;
  }
  for(i=0; i < 60;i++){
    ok = fgetwc(fd);
    putwchar(ok);
  }
  fclose(fd);
  return 1;
}
La, ca fonctionne. Le seul probleme c'est que les caracteres accentues ne sont pas affiches dans ma console, a la place il y a des '?' . Comment remedier a ce problème?

De plus, je me demande si tout ça est bien portable sur n'importe quelle machine (je suis sous Ubuntu).