begin process at 2012 05 29 22:58:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Lecture de caractere speciaux a partir d'un fichier [language c]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lecture de caractere speciaux a partir d'un fichier [language c]

mercredi 15 décembre 2004 à 01:42:41 | Lecture de caractere speciaux a partir d'un fichier [language c]

rouliow

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];

//nomFichier, indique le non du fichier .txt

fp = fopen(nomFichier,"r");

if(fp!=NULL)
{
etat=0;

while( fgets( ligne_fichier, sizeof(ligne_fichier), fp)!=NULL )
{


}

mercredi 15 décembre 2004 à 02:12:47 | Re : Lecture de caractere speciaux a partir d'un fichier [language c]

6co

qu'y a-t-il de vraiment étrange dans le faite ou fgets te renvoie un char qui n'est pas 130...
rappel : -128<valeur d'un char<127

il va falloir traiter tes chaînes en tant qu'unsigned char...

6co
mercredi 15 décembre 2004 à 03:31:58 | Re : Lecture de caractere speciaux a partir d'un fichier [language c]

rouliow

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
//ù


2ème cas


#include <stdio.h>
#include <stdlib.h>

FILE *fp=NULL;
unsigned char ligne_fichier[nb_char];
int etat=-1;

fp = fopen(nomFichier,"r");

if(fp!=NULL)
{

while( fgets( ligne_fichier, sizeof(ligne_fichier), fp)!=NULL )
{
printf ("%ld\n",ligne_fichier[0]);
printf ("%c\n",ligne_fichier[0]);
system("pause");
}
}
/////AFFICHE
//233
//ù

mercredi 15 décembre 2004 à 10:13:12 | Re : Lecture de caractere speciaux a partir d'un fichier [language c]

6co

Réponse acceptée !
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...

6co
mercredi 15 décembre 2004 à 10:19:05 | Re : Lecture de caractere speciaux a partir d'un fichier [language c]

bayeto

Membre Club
Y a t'il un rapport avec les codages ANSI (Windows) et ASCII (dos ou Windows console) ?

Ton fichier texte est il ecrit sous dos (via edit) ou Windows (via notepad) ?

Jette voir un oeil ici
mercredi 15 décembre 2004 à 19:45:42 | Re : Lecture de caractere speciaux a partir d'un fichier [language c]

rouliow

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.

Mille merci ;)


Cette discussion est classée dans : fichier, fonction, caracteres, fp, speciaux


Répondre à ce message

Sujets en rapport avec ce message

Comparaison caracteres dans un fichier et gestion modem, TCP ...... sous C (Linux) [ par macaco94 ] Salut, voila mon probleme:J'ai du finalyser un sniffer utilisant Libnet, libpcap et ensuite adapter un prog qui gere mes modems car c'est une simulati Fonction de reduction de la taille d'un fichier en C ou en C++ [ par djoni ] Bjrs,Je voudrais savoir s'il existe en C ou en C++ une fonction qui permet de réduire la taille d'un fichier . Au cas où cette fonction n'existe pas, Enregistrer Template sur fichier [ par PhoeniXX52 ] Bonjour, J'ai un petit souci avec des template en C++. J'aimerais enregistrer mon vecteur template sur fichier, celà ne fonctionne pas ! Partie de mon Icone extention [ par abdoulax ] Comment récupérer l'icone d'un fichier en fonction de son extention et non en fonction du fichier lui même ???Have Fun ... écrire dans un fichier text [ par typhoun ] Salut! Je voudrai écrire dans un fichier text mais je ne sais pas comment faire en sorte que j'écrive sur une nouvelle ligne après la fin du text.Je m j'arrive pas a ouvrir un fichier [ par angsthase ] Ou doit être placé le fichier texte si je veux l'ouvrir? Voici mon code : int main() {  FILE *fp = fopen ("fichier.txt","r");  if (fp == NULL) pb ecriture ds fichier [ par YOHANONEILL ] bonjour, voila j'ai un programme ou j'écrit dans un fichier des lignes, mais parfois la ligne que j'insert dans le fichier s'écrit 20000 ou 60000 foi ecrire sur la deuxieme ligne d'un fichier texte [ par igorpastis ] salut  voila j'ai fait une fonction qui ecrit dans un fichier texte et je voudrais a chaque fois que j'appelle cette fonction ajouter les valeures sur creer une fonction pour ouverture fichier [ par nach73 ] bonjour,Je debut en C, jaimerai creer une fonction (pas dans le main) qui me permet d'ouvrir un fichier dont l'utilisateur aurait au pralable rentrer problème d'écriture dans un fichier [ par gilles89 ] salut tout le monde, je débute en c++ et voulais poser une question:au fait, j'ai un programme qui récupère un nom de fichier que tape l'utilisateur p


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales