Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Convertion String char* [ Divers / Débutant(e) ] (CerberusAbaka)

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é dans : fichier, string, pages, lignes, fp


Répondre à ce message

Sujets en rapport avec ce message

help sur lecture/ecriture sur fichier sur c++ [ par overfun ] Bonjour à tous et à toutes, je suis nouveau dans la programmation et voudrait savoir comment écrire dans un fichier seulement sur quelques lignes !!Co Compter les lignes d un fichier texte [ par DeepThroat ] Bonjour a tous !J'aimerai trouver une fontion simple qui retourne le nombre de lignes dans un fichier , ou bien qui affiche ce nombre de lignes.j'imag fichier en c [ par GazGaz ] lu all heuu chui po sur detre dan le bon forum donc tapez po trop fort si c po le bon :)alors voila je dispose d'un fichier structuré dont voici 2 li Renommer un fichier [ par mindark ] Bonjour, j'essaie tout betement de renommer un fichier a l'aide des api, mais ca ne marche pas !Je veux renommer "kk.txt" en "qq.txt"String ancien="C: [C] lignes d'un fichier dans un tableau : Segmentation fault [ par Michel76 ] Bonjour,Pardonnez-moi de cette question de débutant.Soit un fichier contenant :-----001002-----Je souhaiterais mettre chacune des lignes de ce fichier vc++ : pb d'ecriture dans fichier taille sup a prévu [ par adidmamah ] g un groooooo pb qui m'épate sincerementj'ecris dans un fichier en utilisant un structure : struct data { char nom[30]; transferer des lignes d'un fichier vers un autre? [ par requinB ] bonjour,qlq'un peut maider?, je veux ajouter des lignes d'un fichier (toutes) sur un autre fichier(en mode ajout), ...est ce que cela est bon:fichier1 Lire dans un fichier [ par SfyLer ] C'est bon j'ai fini mon programme ! enfin presque ! :')J'aimerais lire dans un fichier, donc je l'ouvre et j'utilise ceci:char szBuffer[5000];while(!( enregister les resultats dans un fichier txt. [ par ekinoks ] j'essepaire que vous allé pouvoir m'evité le susside:-/c'est un decrypeteur de fichier, j'aimeré enregistré tout les resultat dans un fichier TXT com Ecriture dans un fichier [ par sebleboss2002 ] Salut tout le monde !Ce coup-ci, j'ai un problème dans l'enregistrement de type integer dans un fichier texte. Voici mon code :#include <iostream.h&g


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 11,996 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.