noulii
Messages postés21Date d'inscriptionmercredi 6 juin 2007StatutMembreDernière intervention 7 janvier 2010
-
14 juin 2007 à 10:36
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 2009
-
14 juin 2007 à 15:55
Bonjour tout le monde,
Ma question est dans la titre, est-il possible de convertir un char en un const char*?
Je m'explique.
Je recupere des lettres dans chaine ce qui me donne quelque chose comme ça:
chaine[1] = A
chaine[2] = B
etc...
Je voudrais écrire chacune de ces lettres dans un fichier .txt qui se nomme FichierCompteurNews.
Je peux utiliser la fonction fputs pour écrire mais en paramétre je ne peux mettre que chaine, hors je ne veux pas toute la chaine juste un petit morceau, qui va de chaine[15] à chaine[30].
Ce que j'aimerai c'est faire ça : fputs(chaine[i],Fichier_SelectionCompteurNews)
Mais j'ai une erreur -> error C2664: 'fputs' : impossible de convertir le paramètre 1 de 'char' en 'const char *'
Je travail sous Microsoft Visual c++.
Quelqu'un aurait - il une solution à m'apporter?
noulii
Messages postés21Date d'inscriptionmercredi 6 juin 2007StatutMembreDernière intervention 7 janvier 2010 14 juin 2007 à 15:43
J'ai trouvé la reponse que je cherchais.
Je voulais ecrire un char dans un .txt
Il suffisait tous simplement d'utiliser la fonction fputc(carcatere[i],fichier)
et le tour est joué!
noulii
Messages postés21Date d'inscriptionmercredi 6 juin 2007StatutMembreDernière intervention 7 janvier 2010 14 juin 2007 à 11:15
Comment je dois déclarer chaine2?
Si je le declare en void*, il me dit : fputs : impossible de convertir le parmètre 1 de void* en const char*
Si je le declare en const char* il me dit : memcpy : impossible de convertir le paramètre 1 de const char* en void*
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 14 juin 2007 à 11:17
je suppose que tu n'as pas forcément toujours les mêmes balises html ? par exemple au lieu de tu peux avoir voire les deux à la suite ?
dans ce cas, c'est assez barbare mais j'ai trouvé cette solution :
la seule différence entre copieur-couloir et c'est qu'il n'y a pas de balise à copieur-couloir. donc avec strstr() tu peux de déplacer le long de ta chaine de '>' en '>'. Ainsi tu fais une boucle qui te décale tant que le caractère qui suit '>' est un '<'. dès que tu tombe sur autre chose, normalement c'est bon.
tu saute jusque là : puis là
| |
Arial color=#000066 size=4>copieur-couloir</TD></TR>
|
ensuite tu lis tes caractères juqu'à retomber sur un '<' ici :
Dans ce .txt je scann ligne par ligne. Les balises sont toujours les mêmes. La seul chose qui change est ce qu'il y a entre les balises et et les nombres qui se trouvent aprés "101", "103", etc...
Le resultat que je voudrais obtenir serai ça :
copieur-couloir 101 326646 103 3155 102 329801
iRC3380 112 833 109 45029 124 15817 122 5458 101 54555
noulii
Messages postés21Date d'inscriptionmercredi 6 juin 2007StatutMembreDernière intervention 7 janvier 2010 14 juin 2007 à 11:48
y'a pas moyen de dire tu cherche ce terme là : "Arial color=#000066 size=4>" ou " </TD></TR>" ou "JavaScript>write_value("" ou " ", " ou celui ci " );</SCRIPT> "
et si tu le trouve, tu le supprime de la chaine?
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 14 juin 2007 à 11:58
ah bah tout est possible en prog, il suffit de le faire. :p
tu peux faire une fonction qui supprime tous les termes contenus entre <> déja ça te réduit le bazar
ensuite tu termines en cherchant le terme write_value et s'il existe tu vire encore tout ce qui te gène et pis voilà.
- sscanf() permet de chercher des termes divers dans une chaine (attention toutefois, si tu recherches une sous-chaine, il s'arrête à chaque espace rencontré)
- strstr() te permet de rechercher un caractère et retourne le pointeur sur ce caractère dans la chaine
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 14 juin 2007 à 13:35
ça reste quand même mieux de faire une fonction générique, qui pourrait fonctionner avec nimporte quelles balises, non ?
à l'école on nous apprend à faire des choses qui pourraient se réutiliser pour d'autres applications, afin de gagner du temps.
cs_fred33
Messages postés9Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention14 juin 2007 14 juin 2007 à 13:42
Absolument !
Tout depend de ce que tu veux faire. Je propose une solution qui fonctionne dans un environnement particulier.
Mais je concede qu'il y a forcement plus élégant !
fred33
cs_fred33
Messages postés9Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention14 juin 2007 14 juin 2007 à 13:50
Cependant, je ne suis pas certain qu'il soit necessaire de réinventer la roue systematiquement. Une des richesses du C++, c'est aussi d'avoir la possibilité de gagner du temps en réutilisant le travail fait par d'autre.
Donc, en gros, dans le cadre d'un projet lié à un apprentissage particulier, tu as tout à fait raison. Mais si il s'agit d'obtenir un resultat rapidement face à un probleme donné, il est, à mon sens, utile de regarder l'existant.
(mais je dis ça, je dis rien :) )
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 14 juin 2007 à 14:05
ce que je voulais dire c'était que le texte à rechercher ne serait pas forcément toujours "Arial color=#000066 size=4>".
si un jour il modifie son fichier txt ne serait ce que la couleur, il sera obligé de rééditer son code pour changer la couleur partout où ça sera nécessaire, c'est un peu dommage.
il vaut mieux chercher en aveugle et je ne suis pas sûr qu'avec ta méthode ça soit possible.
En revance tant que ça sera du code html, il y aura toujours des balises.
cs_fred33
Messages postés9Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention14 juin 2007 14 juin 2007 à 14:10
Oula !!! :)
C'est un exemple !!!
Il ne faut pas utiliser ce morceaux de code tel quel bien sur !!!
c'est juste une réponse à:
"y'a pas moyen de dire tu cherche ce terme là : "Arial
color=#000066 size=4>" ou
"
</TD></TR>" ou
"JavaScript>write_value("" ou " ", " ou celui ci " );</SCRIPT>
"
et si tu le trouve, tu le supprime de la chaine?"
Mais il faut sans doute intégrer ça dans une fonction paramétrable.