Mettre des espaces dans une chaine de caractère

Mettre des espaces dans une chaine de caractère - C++ - Programmation

Marsh Posté le 26-12-2002 à 14:28:59    

J'ai fais un prog qui encadre un texte avec des étoiles en mode console. G donc fais ceci comme code :

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. int main (void)
  4. {
  5. char txt[80-4]={0}; // ici 80 est le nombre maximum de caractère sur une ligne et 4 le nombre d'étoiles et d'espaces en plus sur la ligne.
  6. int nbLettre=0;
  7. cout << "Donnez le texte a taper" << endl;
  8. cin >> txt;
  9. nbLettre = strlen(txt);
  10. cout  << endl << "Texte affiche : " << txt << endl << endl;
  11. cout << "Nombre de lettres : " << nbLettre << endl << endl;
  12. for (int i=0 ; i<nbLettre+4 ; i++)
  13. {
  14.  cout << "*";
  15. }
  16. cout << endl;
  17. cout << "* " << txt << " *" <<endl;
  18. for (int j=0 ; j<nbLettre+4 ; j++)
  19. {
  20.  cout << "*";
  21. }
  22. cout << endl;
  23. return 0;
  24. }


Mais le problème est qu'il coupe le texte apres le premier espace. Le résultat est donc celui çi :
http://doc.gloumy.free.fr/Printecran.JPG
 
Ma question est donc comment faire pour encadrer tout le Doc Gloumy est non juste le Doc ?
Car je n'arrive pas à mettre le texte Doc Gloumy ds la variable txt.

Reply

Marsh Posté le 26-12-2002 à 14:28:59   

Reply

Marsh Posté le 26-12-2002 à 15:05:14    

ni du C ni du C++: reviens quand tu auras choisi et t'auras une reponse appropriée


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 18:33:46    

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. #include <io.h>
  4. #define BUFF_SIZE 80
  5. int main (void)
  6. {
  7.    char txt[BUFF_SIZE - 4];
  8.    char sep[BUFF_SIZE];
  9.    int nbLettre;
  10.  
  11.    memset(sep, '*', BUFF_SIZE);
  12.    cout << "Donnez le texte a taper" << endl;
  13.    if ((nbLettre = read(0, txt, BUFF_SIZE - 5)) <= 0)
  14.    return (1);
  15.    txt[--nbLettre] = 0;
  16.    sep[nbLettre + 4] = 0;
  17.    cout  << endl << "Texte affiche : " << txt << endl << endl;
  18.    cout << "Nombre de lettres : " << nbLettre << endl << endl;
  19.    cout << sep << endl << "* " << txt << " *" << endl << sep << endl;
  20.    return (0);
  21. }


 
walla ca marchera mieux comme ca  :D  :p


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
Reply

Marsh Posté le 26-12-2002 à 19:21:45    

affreux:  :fou:  :fou:  :fou:  :fou:  :fou:
 
 
o jourd hui deja que je suis de mauvais humeur, la je pete un plomb :spookie:
 
 
#include <iostream.h>
 
> pas d'ISO C++
 
#include <string.h>
 
> pas d'ISO C++
 
#include <io.h>
 
> pas d'ISO C++  
 
#define BUFF_SIZE 80
 
> dangeureux et pourquoi 80
 
int main (void)
{
 
> le (void) est inutile
 
  char txt[BUFF_SIZE - 4];
  char sep[BUFF_SIZE];
 
> les std::string c'est pour les chiens
 
  int nbLettre;
 
> et vas y que je réserve tutes mes varaibles en debut de bloc
   
  memset(sep, '*', BUFF_SIZE);
 
> voir les constructeurs de std::string
 
  cout << "Donnez le texte a taper" << endl;
 
>cout et endl n'existe pas. sais tu que endl = '\n' + flush ?
 
  if ((nbLettre = read(0, txt, BUFF_SIZE - 5)) <= 0)
   return (1);
 
> pas standard. d'ailleurs read renvoie -1 ou le nombre d'octets lu. affreux.
> pourkoi (1) et pas 1 ou EXIT_SUCCESS
 
  txt[--nbLettre] = 0;
  sep[nbLettre + 4] = 0;
 
> horrible, j'espere que tu sais ce que tuf ais. voir les std::string
 
  cout  << endl << "Texte affiche : " << txt << endl << endl;
 
> meme remarche et merci pour le triple flush, rappele moi de ne pas te repondre quand tu te plaindra de la lenteur des I/O du C++
 
  cout << "Nombre de lettres : " << nbLettre << endl << endl;
 
> idem
 
  cout << sep << endl << "* " << txt << " *" << endl << sep << endl;
 
> idem
 
  return (0);
 
> meme remarque que plus haut. d'autant plus que cette ligne est inutile en C++
 
}


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 19:37:17    

Allons, allons ce n'est pas la peine d'être si négatif, même s'il faut bien reconnaître que le code de notre ami n'est pas dans un style des plus purs...
 
En C++ standard,
1) on ne met pas de .h dans les includes de la lib standard :
#include <iostream>
#include <string>
 
2) comme tu utilises uniquement la lib standard, une clause using serait la bienvenue. Ainsi tu peux parler de cout et de endl dans ton code.
 
3) ton algo est pas top.


---------------
Le site de ma maman
Reply

Marsh Posté le 26-12-2002 à 19:42:08    

et tu utilises les std::string au lieux des char*


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 20:45:22    

HEY HO DU CALME  :kaola:  :kaola:  
 
le masieur, il a un probleme alors moi j essaye gentillement de lui et resoudre .... et toi au lieu de l aider tu fais ke critiquer mon code ... pas sympa  :fou:  
 
d abord moa je code jamé en C++ mais en C, donc j y conné pas grand chose et ca parrait legitime de faire des erreurs !
 
mais puisque tu es le grand maitre, ô tout puissant du C++, azi propose une solution !  :o


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
Reply

Marsh Posté le 26-12-2002 à 20:50:34    

meme en C, c'est mauvais


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 20:56:54    

admet on meme si je ne vois pas trop a quelle niveau ....
tu n aide toujours pas Doc_Gloumy
 
plus je relis tes critiques  et plus je me dis ke tu connais pas la logique du C  :na:


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
Reply

Marsh Posté le 26-12-2002 à 21:01:20    

MrTonio a écrit :

je me dis ke tu connais pas la logique du C  :na:  


 
Faire n'importe quoi, n'importe comment, peu importe que ça pête dès que l'utilisateur tape des mots trops longs, si ça compile, c'est déja pas mal ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 26-12-2002 à 21:01:20   

Reply

Marsh Posté le 26-12-2002 à 21:05:36    

Code :
  1. #include <iostream>
  2. #include <string>
  3. const unsigned padding(4U);
  4. int main()
  5. {
  6.   std::cout << "Entrez une ligne : ";
  7.   std::string input;
  8.   std::getline(std::cin, input);
  9.   const size_t input_len(input.length());
  10.   std::cout << "Vous avez entre : \"" << input << "\" qui compte " << input_len << " caracteres\n";
  11.   const std::string stars(input_len+padding, '*'), blank(padding/2-1, ' ');
  12.   std::cout << stars << '\n'
  13.     << '*' << blank << input << blank << "*\n"
  14.     << stars << '\n';
  15. }

 
 
bon à part le retour de getline, je vois pas ce qu'on peut dire.


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 21:57:31    

n'empèche qu'avec ton prog taz@ppc, tu as 1 warning...

Reply

Marsh Posté le 26-12-2002 à 21:59:03    

j'ai meme pas compilé! ou ça?


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 22:01:55    

dans le main: tu dois retourner une fonction
(compil et tu verra ;) )

Reply

Marsh Posté le 26-12-2002 à 22:03:07    

:non: VC++ ? dis moi le warning que je rigoles?
 
 
 
sinon, pour tes etrennes, demande un BS et vas faire un tour à la section 3.2 "Hellow World" :whistle:


Message édité par Taz@PPC le 26-12-2002 à 22:06:43

---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 22:06:37    

warning C4508: 'main' : function should return a value; 'void' return type assumed

Reply

Marsh Posté le 26-12-2002 à 22:07:03    

mais par contre je suis d'accord avec toi qu'il marche ton prog...

Reply

Marsh Posté le 26-12-2002 à 22:07:04    

editaid!


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 22:08:32    

LeCoyote a écrit :

warning C4508: 'main' : function should return a value; 'void' return type assumed


 
c'est dingue quand meme: VC++ n'est pas au courant de la norme et modifie donc le code: mais ca devrait alors générer une erreur puisqu'en C++, le type de retour de main doit etre 'int'  :lol:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 22:14:24    

évidemment, c la faute du compilateur...

Reply

Marsh Posté le 26-12-2002 à 22:18:09    

LeCoyote a écrit :

évidemment, c la faute du compilateur...

tu veux parier? J'ai pas trop envie de me relever pour aller chercher mon BS, mais s'il le faut, je me ferait une joie de t'enfoncer  :sol:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 22:30:19    

Taz@PPC a écrit :

tu veux parier? J'ai pas trop envie de me relever pour aller chercher mon BS, mais s'il le faut, je me ferait une joie de t'enfoncer  :sol:  


arrete un peu... tu me lourde!
MAIS OUI!!!! TU EST LE PLUS FORT!!!!
pffffffffff
laisse tomber ton "BS"!

Reply

Marsh Posté le 26-12-2002 à 22:32:17    

LeCoyote a écrit :


laisse tomber ton "BS"!


 
on doit pas parler du meme truc  la :heink:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 22:34:54    

laisse tombé qd meme

Reply

Marsh Posté le 26-12-2002 à 22:36:48    

non  :non:
 
c'est grave de pas connaitre les bases :(


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 22:37:17    

aller tchao

Reply

Marsh Posté le 26-12-2002 à 22:37:48    

:hello:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 22:46:27    

Taz@PPC a écrit :

Code :
  1. #include <iostream>
  2. #include <string>
  3. const unsigned padding(4U);
  4. int main()
  5. {
  6.   std::cout << "Entrez une ligne : ";
  7.   std::string input;
  8.   std::getline(std::cin, input);
  9.   const size_t input_len(input.length());
  10.   std::cout << "Vous avez entre : \"" << input << "\" qui compte " << input_len << " caracteres\n";
  11.   const std::string stars(input_len+padding, '*'), blank(padding/2-1, ' ');
  12.   std::cout << stars << '\n'
  13.     << '*' << blank << input << blank << "*\n"
  14.     << stars << '\n';
  15. }

 
 
bon à part le retour de getline, je vois pas ce qu'on peut dire.


 
bah walla t as servi a qqch  :whistle:  


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
Reply

Marsh Posté le 27-12-2002 à 00:25:28    

Perso, c'est pas pour dire, mais entre un Coyote qui fait le kéké avec son warning à deux balles et un Tonio un brin insolent... Sale journée pour les artisans du C++ qui travaillent leur code et dispensent leur savoir.


Message édité par Cherrytree le 27-12-2002 à 00:26:05

---------------
Le site de ma maman
Reply

Marsh Posté le 27-12-2002 à 00:31:26    

comme tu dis  [:totoz]


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 27-12-2002 à 00:32:19    

Cherrytree a écrit :

Perso, c'est pas pour dire, mais entre un Coyote qui fait le kéké avec son warning à deux balles et un Tonio un brin insolent... Sale journée pour les artisans du C++ qui travaillent leur code et dispensent leur savoir.


je fais pas du tout le "kéké", ce qui me rend fou c de voir taz@ppc comment il s'la jou... alors stp reste en dehor de tt ca... ok?

Reply

Marsh Posté le 27-12-2002 à 00:45:53    

Citation :

o jourd hui deja que je suis de mauvais humeur, la je pete un plomb


 
on est pas la pour éponger tes sautes d'humeurs, alors t'es prié de causer avec un meilleur ton.
 

Citation :

ni du C ni du C++: reviens quand tu auras choisi et t'auras une reponse appropriée


 
T'aurais peut etre mieux fait de te taire sur ce coup là.
 

Citation :

meme en C, c'est mauvais


 
Je sais pas ou tu vis, mais si, moi, de toute ma vie, ce code de doc_gloumy est le pire code que je dois me taper, ben je serais mais hyper heureux.
Y'a franchement pire, franchement ... et piquer un caca nerveux parce qu'il a mis void et que c'est pas la peine, ouh la, mais toi tu vas te pendre le jour ou tu vas debouler sur le marcher du travail, et que tu vas devoir reprendre le code d'un autre. Je te vois deja a tout reecrire. (syndrome NIH : "tout ce qui n'a pas été fait par moi c'est de la merde", ca coute une fortune aux boites)
Moi je met void parce que j'aime bien souligner le fait que je ne recoit rien. La norme dit qu'il est inutile, pas qu'il ne faut pas le mettre. Pas besoin de hurler pour ca donc. Ca releve plus du style de codage que de la norme ca.
De même je met return 0, parce que sur terre y'a pas que gcc 3+, et que y'a tout un tas de compilos qui aiment bien ca. Et puis moi aussi j'aime bien. Parce que quand j'écris mon code, je cherche à ce qu'il soit compréhensible par un non initié au C++, et pas à exploiter les détails de la norme dans le but de perturber le lecteur et pouvoir me la péter à coups de citations de la norme et du TCPL.
 
Faut etre un peu pedagogue, toi quand tu t'initie a python ou autre, t'aime bien qu'on t'explique gentiment et pas qu'on te gueule dessus "mais ca c'est les bases du python, je vais aller chercher mon *** pour t'enfoncer, c'est mauvais, ton truc c'est de la mêêêêrde (a la JP Coffe).
 
Et d'une maniere générale t'es chiant à te la péter et à décrier les produits MS, VC++ en particulier.
T'aimes pas on a bien compris. Mais pas besoin de le rappeller pratiquement a chaque fois, ca incite au troll.
 
VC++, c'est pas un compilo, c'est beaucoup plus. C'est un produit MS, donc on retrouve a peu pres le meme schemas : une utilisation beaucoup plus agréable, mais une implémentation un peu chiadique. Mais il a une excuse : il est vieux, et gcc a l'epoque ne devait pas etre tellement mieux niveau norme.
D'ailleurs ca fait pas longtemps qu'il gueule pour le std:: manquant, contrairement à VC++ :P
Pour info, VC++ 6 est sorti en 1998, et la norme actuelle de C++ date de ... 1998 !

Citation :

c'est dingue quand meme: VC++ n'est pas au courant de la norme


oui, c'est dingue. Faudra que je pense à le lui dire.
 
A t'entendre on peut rien compiler avec VC++.
Et pourtant des programmes/bibliotheques multi OS qui compilent sous VC++, y'en a plein. Alors faut relativiser un petit peu.
 
Perso, le seul truc de la norme qui me gene avec VC++ 6, c'est la portee du i dans les blocs for

Code :
  1. for (int i;;) {}
  2. // ici le i est toujours utilisable :(
  3. for (int i;;) {} // compile pas :(


mais j'arrive a survivre sans.
Mais ca c'est réparé avec la nouvelle version, et c'est celle la qu'il faut comparer avec gcc 3.2+, et pas une version de près de 5 ans.
VC++ 7, je ne l'ai pas, mais il parrait que niveau norme, il est nickel :
"(...) this version being one of the most standards-compliant C++ compilers running today on any platform"
http://www.ondotnet.com/pub/a/dotn [...] ttcpp.html
 
Enfin bref, tout ca pour te rappeler que c'est pas à des gosses de 5 ans que tu parles. S'il a envie d'utiliser string.h, ben il le fait. Peut etre qu'il veut utiliser string.h pour apprendre les bases et ensuite bien comprendre ce qui se passe derriere quand il utilise std::string.
Alors, plutot que de te défouler sur lui et de pourir l'ambiance, tu lui glisses que son programme serait plus simple avec des std::string, et tu lui files un lien.
http://www.cmla.ens-cachan.fr/Util [...] AQ/#string
 
T'aime bien potasse les normes apparement, alors je te conseille de lire les normes genre "la netiquette" ou "comment parler avec les autres"


Message édité par HelloWorld le 27-12-2002 à 00:49:10

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 27-12-2002 à 02:03:00    

HelloWorld a écrit :

T'aime bien potasse les normes apparement, alors je te conseille de lire les normes genre "la netiquette" ou "comment parler avec les autres"


 
 :jap:  
 
 
Tout à fait d'accord, il n'est pas interdit d'être aimable.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 27-12-2002 à 08:33:29    

je gueule beaucoup mais je maintiens tout ce que j'ai dit.
 
Vous etes pas habitué à vous prendre des coups de pieds au cul sur HFR, c'est tout. Si Gabriel DosReis (et d'autres) ne m'avait pas botté comme il le faut quand je mélangeais C et C++, ne m'avait pas assomer à coup de référence au BS, ben j'en serai pas là. etc
 
Je crois que faut être clair: faut savoir ce qu'on veut. On m'a enseigné le C et le C++ à la fac, ben j'ai pu jeter toutes mes connaissances à la flotte. L'apprentissage est difficile, mais un jour ou l'autre fo tout poser à plat et savoir ce qui est bon et à jeter (le mélange de char[], de read et iostream est pour ma part le meilleur que j'ai jamais vu)
 
J'ai rien contre VC++, mais on peut pas dire que pour les debutants ils soient bien. Il est vieux certes, mais fo pas programmer en regardant en arriere et à lire la MSDN non plus.
 
Et si tu regardes bien le forum, il m'arrive d'etre tres aimable avec les debutants et les autres, suffit juste de pas me titiller.


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 27-12-2002 à 09:10:00    

LeCoyote a écrit :


je fais pas du tout le "kéké", ce qui me rend fou c de voir taz@ppc comment il s'la jou... alors stp reste en dehor de tt ca... ok?

Moi, ce que je lis c'est que tu testes le code de Taz pour y trouver la petite bête et tu la lui soumets en patûre, non pour obtenir un meilleur code, mais pour mettre ce forumeur en défaut. C'est bas.
 
M'enfin, c'est pas grave.


---------------
Le site de ma maman
Reply

Marsh Posté le 27-12-2002 à 09:47:36    

Cherrytree a écrit :

Moi, ce que je lis c'est que tu testes le code de Taz pour y trouver la petite bête et tu la lui soumets en patûre, non pour obtenir un meilleur code, mais pour mettre ce forumeur en défaut. C'est bas.
 
M'enfin, c'est pas grave.


Si tu l'dis...

Reply

Marsh Posté le 27-12-2002 à 11:29:49    

LeCoyote a écrit :


Si tu l'dis...

Ouais. :o


---------------
Le site de ma maman
Reply

Marsh Posté le 27-12-2002 à 11:44:05    

Taz@PPC a écrit :

Gabriel DosReis  


 
 
[:prosterne]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 27-12-2002 à 11:46:20    


C'est la premiere fois que je vois te prosterner !

Reply

Marsh Posté le 27-12-2002 à 11:48:55    

samuelp a écrit :


C'est la premiere fois que je vois te prosterner !

y a de quoi


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed