krusty24
Messages postés19Date d'inscriptionvendredi 15 septembre 2006StatutMembreDernière intervention15 novembre 2011
-
10 mai 2007 à 12:03
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
10 mai 2007 à 15:26
bonjours tout le monde
je suis face a un probleme de taille.
En effet je cherche a lire dans un fichier txt certain caractere comme par exemple les tabulations et les espaces. Je n'ai aucune idée de comment faire.
Le but de mon programme est de passer d'un fichier de coordonné séparé par des espace vers un fichier de coordonné séparé par des tabulation et vice et versa
merci d'avance a toute personne essayant de m'aider
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 10 mai 2007 à 12:31
Il suffit de proceder de la maniere suivante
tu parcours la premiere chaine, si tu tombe sur un caracteres norma tu l'ecris dans la deuxieme. si c'est un espace, tu ecrit une tabultation dans la deuxieme fait et tu met une varaible a une certaine valeur, tant que tu est sur des espaces et que la variable vaut la valeur tu n ecris pas dans la deuxieme chaine. quand tu retombe sur un caractere normal tu rechange la valeur de la variable drapau" et tu réecrit les caracteres.
bon je ne sais pas si c'est clair, mais bon :)
krusty24
Messages postés19Date d'inscriptionvendredi 15 septembre 2006StatutMembreDernière intervention15 novembre 2011 10 mai 2007 à 14:49
j'ai trouver le probleme.
c'est une erreur d'algorithmique, il me fallait juste un autre indice de parcour pour le tableau tabRes.
J'ai par la meme occasion modifier le while qui est devenu:
while(fgets(tabCh,512,falire)!=NULL)
merci a laurent1024 pour tes conseils
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 10 mai 2007 à 12:16
tu lit ton fichier avec des write => tu recupere des tableau de caracteres, tu parcours le tableau tu remplace les " " par "\t" et tu enregistre le trableau dans un autre fichier
krusty24
Messages postés19Date d'inscriptionvendredi 15 septembre 2006StatutMembreDernière intervention15 novembre 2011 10 mai 2007 à 12:26
je comprend ton idée mais le probleme est que dans le tableau je peux me retrouvé avec plusieur espace a la suite, or je veut qu'une tabulation pour les remplacer tous, ce qui rend le traitment avec des tableau plus complexe. J'attend donc d'autre idée.
merci quand meme
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 10 mai 2007 à 12:39
oui si tab chaine du type char tabChaine[X] ou char * tabChaine; (avec un initialisation avec malloc quelque part avant) et que n est bien un indice du tableau.
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 10 mai 2007 à 12:45
Oui. C'est le meme principe. Car en fait " " est "\t" sont des caracteres comme les autres du point de vu asscii. Tu peut travailler avec eux comme si c'etait le caractere A ou z.
mon fichier en entré est du type:
2.3 4,5 6.7 8,9
1.3 2,4 5.7 6,8
et le resultat obtenu est:
2.3 .4,5 6.7 .8,9
1.3 .2,4 5.7 .6
bilan: quand il y a 2 espaces entre 2 valeurs les tabulation sont de taille 5 et non de 4 comme les autre puis il me rajoute aussi des '.' la ou il y a deux espace
autant dire que j'ai du mal a trouver la logique de cette execution
krusty24
Messages postés19Date d'inscriptionvendredi 15 septembre 2006StatutMembreDernière intervention15 novembre 2011 10 mai 2007 à 14:03
afin de tester il faut ajouter aprés la declaration des variables:
//ouverture du fichier a modifier
printf("\nenter the name of the input file (with extension):");
nomFic=malloc(256*sizeof(char));
scanf("%s",nomFic);
falire=fopen(nomFic,"r");
if (falire==NULL)
{
printf("error %s: file not found\n",nomFic);
system("PAUSE");
exit(0);
}
printf("enter the name to create the output file: ");
nomFic_corr=malloc(256*sizeof(char));
scanf("%s",nomFic_corr);
//ouverture du fichier de sortie
fcorr=fopen(nomFic_corr,"w");
if (fcorr==NULL)
{
printf("\nerror: cannot create the result file\n");
system("PAUSE");
exit(0);
}
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 10 mai 2007 à 14:52
le problème est certainement dû au fait que tu utilises la même variable pour parcourir le tableau source et le tableau destination
en effet, lorsque plusieurs espaces se succèdent, tu ne mets pas de valeur dans ton tableau destination et pourtant tu décales ton pointeur. il y a donc des valeurs non enregistrées, qui sont certainement tes points...
tu dois utiliser une autre variable pour ton tableau destination que tu n'incrémentes que lorsque tu entres une valeur, sans te préoccuper de la position du pointeur sur ton tableau source.