Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1912 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  processus, pipes, et chaîne en majuscule

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

processus, pipes, et chaîne en majuscule

n°904681
angelseb
Posté le 22-11-2004 à 14:13:08  profilanswer
 

J'ai un petit programme à effectuer. Le processus père envoie au fils une chaîne de caractères, ici "bonjour", le fils la met en majuscule et la renvoie au père qui répond "merci".
 
J'ai réussi à faire communiquer les processus entre eux. Le seul problème qui me reste est que je ne sais pas comment convertir tout en majuscule la chaîne de caractère.
 
Après quelques recherches, j'ai lu qu'il fallait utiliser la fonction toupper() qui convertit simplement un caractère. Il faudrait concaténer chaque lettre du mot dans une autre chaîne de caractère. Cela est-il possible? Si oui, quelqu'un pourrait-il m'indiquer la ligne de code à rajouter en m'expliquant svp? Merci d'avance ;)
 

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. int main(){
  6. int fils;
  7. int p1[2];
  8. int p2[2];
  9. int p3[2];
  10. int data;
  11. pipe(p1);
  12. pipe(p2);
  13. pipe(p3);
  14. if((fils=fork())==0)
  15. {
  16.  char tampon[10];
  17.  close(p1[1]);
  18.  close(p2[0]);
  19.  close(p3[1]);
  20.  data=read(p1[0],tampon,10);
  21.  printf("le mot est %s\n",tampon);
  22.  data=write(p2[1],tampon,10);
  23.  data=read(p3[0],tampon,10);
  24.  printf("enfin la réponse du pere est : %s\n",tampon);
  25. }
  26. else
  27. {
  28.  char rep[10];
  29.  close(p1[0]);
  30.  close(p2[1]);
  31.  close(p3[0]);
  32.  data=write(p1[1],"bonjour",10);
  33.  data=read(p2[0],rep,10);
  34.  printf("la reponse du fils est : %s\n",rep);
  35.  data=write(p3[1],"merci",10);
  36. }
  37. }

mood
Publicité
Posté le 22-11-2004 à 14:13:08  profilanswer
 

n°904686
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:16:20  profilanswer
 

ben tu fais un strdup et après
 
pour i {0..n-1}:
  chaine[i] = toupper(chaine[i])
 
write(p1[1],"bonjour",10);
manqué

n°904692
angelseb
Posté le 22-11-2004 à 14:24:53  profilanswer
 

Taz a écrit :

ben tu fais un strdup


 
Qu'est-ce que strdup stp?
 

Taz a écrit :

et après
pour i {0..n-1}:
  chaine[i] = toupper(chaine[i])


 
Ca marche impeccable :)
 

Taz a écrit :

write(p1[1],"bonjour",10);
manqué


 
Dsl j'ai pas compris ce que tu voulais entendre ici :D


Message édité par angelseb le 22-11-2004 à 14:30:19
n°904697
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:34:13  profilanswer
 

Code :
  1. #include <stdlib.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4. char* string_upper(const char *s)
  5. {
  6. char *up;
  7. size_t i, len;
  8. len = strlen(s);
  9. up = malloc(len + 1);
  10. if(!up) return NULL;
  11. for(i = 0; i < len; ++i)
  12. {
  13.  up[i] = toupper(s[i]);
  14. }
  15. up[len] = '\0';
  16. return up;
  17. }
  18. #include <stdio.h>
  19. int main()
  20. {
  21. char *s = string_upper("BonJour !" );
  22. puts(s);
  23. free(s);
  24. }

va falloir un peut te dégourdir et commencer à RTFM

n°904706
angelseb
Posté le 22-11-2004 à 14:44:17  profilanswer
 

Merci mais je n'ai pas besoin de gérer aussi précisément la mémoire.
 
Et ce n'était pas la peine de me dire de me dégourdir... Je suis simplement étudiant et vu le prof que je me tape, ce n'est pas facile de capter. J'essaie de me débrouiller par moi même et grâce à des personnes s'y connaissant telles que toi, je progresse.

n°904709
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:47:21  profilanswer
 

Angelseb a écrit :

Merci mais je n'ai pas besoin de gérer aussi précisément la mémoire.

bla bla
 
lis la documentation de read/write et tu m'appelles le jour où sizeof "Bonjour" ça fait 10


Message édité par Taz le 22-11-2004 à 14:47:59
n°904713
Lam's
Profil: bas.
Posté le 22-11-2004 à 14:50:45  profilanswer
 

Je pense qu'il voulait faire un one-liner d'étudiant, genre:
 

Code :
  1. void string_upper(char * s)
  2. {
  3.   while(*s++=toupper(*s)) ;
  4. }

Non ? :D


Message édité par Lam's le 22-11-2004 à 14:51:06
n°904714
HelloWorld
Salut tout le monde!
Posté le 22-11-2004 à 14:53:43  profilanswer
 

Code :
  1. std::string s( "bonjour" );
  2. std::transform( s.begin(), s.end(), s.begin(), toupper );


:whistle:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°904715
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:54:09  profilanswer
 

euh ça fait un peut peur niveau évaluation de s

n°904722
angelseb
Posté le 22-11-2004 à 14:58:16  profilanswer
 

Taz a écrit :

euh ça fait un peut peur niveau évaluation de s


 
Ah oui tu en connais bcp toi qui apprenne à programmer en C++ en S? Faut arrêter...

mood
Publicité
Posté le 22-11-2004 à 14:58:16  profilanswer
 

n°904723
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:58:35  profilanswer
 

HelloWorld a écrit :

Code :
  1. std::string s( "bonjour" );
  2. std::transform( s.begin(), s.end(), s.begin(), toupper );


:whistle:

si t'avais vraiment voulu jouer au con, t'aurais utiliser boost::to_upper

n°904725
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:59:13  profilanswer
 

Angelseb a écrit :

Ah oui tu en connais bcp toi qui apprenne à programmer en C++ en S? Faut arrêter...

fortune

n°904737
HelloWorld
Salut tout le monde!
Posté le 22-11-2004 à 15:11:18  profilanswer
 

boost c'est pas standard :o


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°904814
blackgodde​ss
vive le troll !
Posté le 22-11-2004 à 16:38:28  profilanswer
 

Angelseb a écrit :

Ah oui tu en connais bcp toi qui apprenne à programmer en C++ en S? Faut arrêter...


 
PTDR :lol:


---------------
-( BlackGoddess )-
n°904847
HelloWorld
Salut tout le monde!
Posté le 22-11-2004 à 17:12:34  profilanswer
 

Moi j'ai pas compris.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°904855
Lam's
Profil: bas.
Posté le 22-11-2004 à 17:25:48  profilanswer
 

HelloWorld a écrit :

Moi j'ai pas compris.


Il croit que Taz lui a dit: "Tu auras une mauvaise note à ta Première S, ou ta terminale S". C'est comme ça que je le comprends, et c'est à mourir de rire.

n°904858
cris56
Posté le 22-11-2004 à 17:31:01  profilanswer
 

c'est du c, c'est pas dans la bonne cat

n°904872
HelloWorld
Salut tout le monde!
Posté le 22-11-2004 à 17:42:37  profilanswer
 

Lam's a écrit :

Il croit que Taz lui a dit: "Tu auras une mauvaise note à ta Première S, ou ta terminale S". C'est comme ça que je le comprends, et c'est à mourir de rire.


Ah ok... :sweat:


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  processus, pipes, et chaîne en majuscule

 

Sujets relatifs
Envoyer sur stdin, récupérer stdout, d'un processus crée[PHP] expressions reguliere: + petite chaine qui match
javascript et chaine carctèressynthaxe requete avec chaine
recupérer chiffres dans une chaine[C]Intercepter les donnees ecrites par un processus
[C] Tri bulle sur chaîne de caractèresdebutant : comment aller a la ligne dans une chaîne
Recuperer un morceau de chaineNombre maximum de fichiers ouverts par processus
Plus de sujets relatifs à : processus, pipes, et chaîne en majuscule


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR