rouliow
Messages postés6Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention17 juin 2005
-
15 déc. 2004 à 01:42
rouliow
Messages postés6Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention17 juin 2005
-
15 déc. 2004 à 19:45
Bonjour,
j'ai un problème en language C.
J'aimerai crée une fonction qui ouvre un fichier .txt et qui sauvgarde chacun des caracteres du fichier dans une liste chainée.
Ma fonction marche. Le seul probleme que je rencontre c'est lorsque j'ai des caracteres speciaux tels que les caracteres accentués dans mon fichier texte. La fonction fgets, me renvoit une valeur négative pour le code ascii de ces caracteres.
(ex é->-23 au lieu de 130, è->-24 au lieu de 138)
J'aimerai gérer cette éventualité, et enregistré ces caractères.
Il doit y avoir une autre methode que la conversion cas par cas.
Comment pourrai-je faire ?
Si vous avez des solutions a me proposer je suis preneur, merci d'avances ;)
J'ai mit juste le debut de mon code
FILE *fp=NULL; // Variable pour ouvrir le fichier
int etat=-1; //varible de retour,indique l'échec ou le succè de la fonction
char ligne_fichier [nb_char];
cs_6co
Messages postés114Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention 5 avril 20121 15 déc. 2004 à 10:13
il est vrai que j'avais oublié ce détail...
de même si tu fais :
printf("oublié");
tu obtiens à l'affichage un truc comme "oubliù"
les caractères ne sont pas les mêmes sous windows que sous la console...
alors, soit tu fais une conversion soit tu laisses tomber, sachant que ta conversion ne sera vraiment utile que si tu édites ton texte en console et que tu veux l'ouvrir sous windows ou inversement.
quand j'étais en cours, un exercice était de convertir des fichiers txt provenant de ms-dos pour pouvoir les lire convenablement sous windows avec le notepad. le prof avait donné la liste des caractères à changer mais désolé, impossible de remettre la main dessus...
rouliow
Messages postés6Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention17 juin 2005 15 déc. 2004 à 03:31
Cool,j e poste et j'ai une réponse en quelques minutes.
Merci à toi;)
Avec ce que j'avais écrit c'est normale que ça ne puisse pas marché, cependant j'ai toujours des erreures.
Si j'ouvre un fichier .txt contenant un caractere ascentué comme premier caractere, fgetc() ou fgets(), me renvoit pas le bon code ascii corespondant à ces caracteres et par conséquent cela ne stoque par le bon char.Par exemple il me renvoie 233 pour le caractere é.
Je comprend pas d'ou peut provenir l'erreur, je dois vraiment être un gros boulet, à moin que se soit la fatigue...
Bon, je vais me coucher moi.
Merci à tous d'éclairer ma lenterne.
1er cas.
#include <stdio.h>
#include <stdlib.h>
FILE *fp=NULL;
int mot [nb_char];
int etat=-1;
fp = fopen(nomFichier,"r");
if(fp!=NULL)
{
etat=0;
while ((mot[0] = fgetc(fp)) != EOF)
{
printf ("%ld\n",mot[0]);
printf ("%c\n",mot[0]);
system("pause");
}
}
/////AFFICHE
//233
//ù
rouliow
Messages postés6Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention17 juin 2005 15 déc. 2004 à 19:45
Le but de ma fonction serra de gérer l'ouverture d'un fichier .txt.
Je dois en réalité crée un éditeur de texte en mode pleine page, du meme genre que notepad, donc l'insertion de ces caracteres me parait indispensable. Mon fichier était écrit via notepad.
Je savais pas que les fichiers .txt provenant de ms-dos etaient différent de windows. Donc ça répond à ma question, si je me sert de mon éditeur pour lire et modifier des fichiers .txt écri sous dos alors je n'ai plus de soucie. Si je veux les rendre compatible windows, il me suffit de crée une fonction de conversion.