begin process at 2012 02 12 12:48:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Convertion String char*


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

Convertion String char*

mercredi 28 novembre 2007 à 08:46:50 | Convertion String char*

CerberusAbaka

Bonjour;

   Je développe avec Dev C++ un petit exécutable qui converti des PostScript couleur en noir et blanc, tout marche pas trop mal mais j'ait un petit problème à la fin... sic

Voila une foi les couleurs changées dans le fichier d'origine, il faut recréer un fichier avec toute les lignes du premier, le problème est que certaines lignes ont cette syntaxe :

%!PS-Adobe-3.0

ou encore :

%%Pages: (atend)

Donc en fait mes lignes modifiées sont stocké dans un std::string, puis j'utilise :

cout << line << endl;                           
fprintf(fp,line.c_str()); 
fprintf (fp,"\n");

Où fp est mon fichier de sortie, line une ligne du fichier, le cout donne :
%%Pages: 1

mais dans le fichier de sortie je me retrouve avec
%Pages: 1

Voila, en fait il me "mange" le caractère %.... Alors si quelqu'un à une solution...

 

Merci d'avance 

 

mercredi 28 novembre 2007 à 09:20:51 | Re : Convertion String char*

CerberusAbaka

Réponse acceptée !

Bon, j'ait trouver en fait ;)

 

si sa peut servir à quelqu'un il faut utiliser un ofstream.

 

Je vait poster la source de la conversion des Ps ;)

mercredi 28 novembre 2007 à 09:46:18 | Re : Convertion String char*

theneoiceman

Bon tu as déjà accepté ta propre réponse mais je vais quand même éclairer ta lanterne concernant cette perte de % dans le fprintf.

N'oublie pas que le fprintf est un printf fait directement dans un fichier (ou plutot printf est l'equivalent d'un fprintf avec comme fichier la sortie stdout). La chaine qu'utilise donc fprintf utilise les formats que tout programmeur connait %d %f %l etc etc.
Et bien sur la question est comment représenter un % en printf alors que ca sert à indiquer le forat ?

Réponse simple, tu écris %% dans ta chaine de caractere et ca affichera un %

Donc c'est là que je rejoins ton probleme d'origine.
Les chaines que utu récupéréias étaient de la forme "%%Pages: (atend)" par exemple.

Donc une fois la converszion faite avec le c_str(), la chaine était passée dans le fprintf qui interprétae ces "%%" come un seul et unique "%" (comme expliqué plus haut).

Voila l'origine de ton probleme.
Maintenant que tu n'utilises plus fprintf pas de soucis mais si tu avais continué à l'utiliser il aurait fallu que tu parcoures une premiere fois ta chaine pour remplacer chaque "%" trouvé par "%%" et hop le tour était joué.

J'espère avoir été clair ^^

Bonne journée


Mess with the best, die like the rest
mardi 20 mai 2008 à 16:51:30 | Re : Convertion String char*

guillaume_00

Le plus simple si tu veux toujours utiliser fprintf est de préciser le format (2nd argument) et passer ton buffer comme paramettre :

fprintf(fp, "%s", line.c_str()); 

Ainsi pas besoin de modifier line et pas de risque liés à l'utilisation de fprintf

++
mercredi 21 mai 2008 à 08:30:44 | Re : Convertion String char*

CerberusAbaka

Merci pour vos réponses et explication, désolé pour le temps de réponse lol

Je vais poster ma source, comme prévu, mais je passe maintenant par du VB.NET, plus simple à utiliser. Je me sers de ce petit EXE pour de la conversion de plan CAO en PDF, on les enregistre en .ps, convertis en noir et blanc, puis en PDF. La couleur sur les plan sa peut porter à confusion parfois....


http://www.vbfrance.com/codes/CONVERTION-PS-NOIR-BLANC_46720.aspx

Merci ;)


Cette discussion est classée dans : fichier, string, pages, lignes, fp


Répondre à ce message

Sujets en rapport avec ce message

remplir une chaine par des lignes d'un fichier [ par boualiasma ] Bonjour, Je voulais remplir une chaine 's' par des lignes des fichiers. par exemple si on a le fichiers "test.txt": aaa [quote]cc bbbbb deee[/quote] moyennage besoin d'aide [ par cedm237 ] Bonjour, je connais pas grand chose en C, mais j'ai besoin d'un petit code, qui me fasse ceci: -j'ai un fichier contenant 1millions de ligne de coordo fichiers en C [ par boualiasma ] Salut, 1) Dans mon travail, j'utilise des fichiers. je crée un fichier "essai.txt" pour le remplir fp = fopen("essai.txt","w"); // je fais des tra union de deux fichiers [ par boualiasma ] Bonjour, Je voulais ajouter autres lignes (autres données) à la fin du fichier 'output.txt' à partir d'un autre fichier 'exp.txt' le contenu de fich Problème écriture fichier avec fputs et chaine créée avec l'objet string [ par curite ] Bonjours, j'ai un problème, je n'arrive pas a écrire dans un fichier avec fputs en mettant un chaine de caractère créée avec l'objet string, voici le Enregistrer un type string dans un fichier [ par jeromenaze ] Bonjour, J'ai un problème j'ai rechercher un peut partout mais je suis débutant en programmation donc j'aimerai des explication. Voila je veut enregis Exception anormale lors d'un substr C++ [ par LeaIUT ] Bonsoir, lors de l'execution de mon programme, une exception me stoppe la progression: "terminate called after throwing an instance of 'std::out_of_r Problème de pointeur : erreur non-lvalue in assignment [ par AmStErDaMnEd ] Bonjour,    j'ai récupéré un bon de code pour pouvoir splitter une chaine. Cela fonctionne sans pointeur. Cependant, j'ai besoin de récupérer un char* extraire des lignes d'un fichier csv avec visual C++ [ par cre31400 ] Bonjour, J'utilise visual C++, et j'aurais besoin de votre aide. J'ai un fichier .csv contenant environ 1000 lignes, mais seulement une trentaine sont Bug identificateur introuvable ? [ par FeelCode ] hello j'ai une erreur qulque peux bizzard, voici le rapport du compilateur Visual studio 2005 ------ Début de la génération : Projet : ConsolC, Confi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 1,279 sec (3)

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