qqn connait une fonction qui met une chaine de cara en majuscules ??

qqn connait une fonction qui met une chaine de cara en majuscules ?? - C++ - Programmation

Marsh Posté le 26-10-2002 à 19:50:48    

tout est dans le titre  :)

Reply

Marsh Posté le 26-10-2002 à 19:50:48   

Reply

Marsh Posté le 26-10-2002 à 19:51:28    

lower() ?


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 26-10-2002 à 19:53:27    

en fait jen ai besoin dans une recherche pour eviter que les majuscules soit prises en compte (avec strcmp)


Message édité par red faction le 26-10-2002 à 19:55:00
Reply

Marsh Posté le 26-10-2002 à 19:54:18    

Code :
  1. int lower(int c) {
  2.   if (c >= 'A' && c <= 'Z')
  3.     return c + 'a' - 'A';
  4.   else
  5.     return c;
  6. }
  7. int upper(int c) {
  8.   if (c >= 'a' && c <= 'z')
  9.     return c + 'A' - 'a';
  10.   else
  11.     return c;
  12. }


Message édité par Marnie le 26-10-2002 à 19:57:54

---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 26-10-2002 à 19:54:37    

red faction a écrit a écrit :

upper() plutot merci jarrive plus a tomber sur le nom



Oups, désolée.


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 26-10-2002 à 19:58:52    

red faction a écrit a écrit :

en fait jen ai besoin dans une recherche pour eviter que les majuscules soit prises en compte (avec strcmp)



Ben, tu fais un upper() de ta chaine et tu fais un strcmp ensuite, non ?


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 26-10-2002 à 21:08:08    

upper n'existe pas
 
 
dans <ctype.h>
 
int tolower(int c);
int toupper(int c);


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

Marsh Posté le 26-10-2002 à 21:55:28    

Marnie a écrit a écrit :

Code :
  1. int lower(int c) {
  2.   if (c >= 'A' && c <= 'Z')
  3.     return c + 'a' - 'A';
  4.   else
  5.     return c;
  6. }
  7. int upper(int c) {
  8.   if (c >= 'a' && c <= 'z')
  9.     return c + 'A' - 'a';
  10.   else
  11.     return c;
  12. }






 
Marche pas en ebcdic :)

Reply

Marsh Posté le 26-10-2002 à 21:58:15    

ebdic ou pas ca marche pas qu'est ce qui te dis que les majuscules ont de scodes plus petits que les minuscules (ou l'inverse) tes calculs vont merder suivant que les char sont signés ou pas
 
les fonctions standards, caibonmangezen


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

Marsh Posté le 26-10-2002 à 23:30:29    

Taz@PPC a écrit a écrit :

ebdic ou pas ca marche pas qu'est ce qui te dis que les majuscules ont de scodes plus petits que les minuscules (ou l'inverse) tes calculs vont merder suivant que les char sont signés ou pas
 
les fonctions standards, caibonmangezen



Je tire ça du K&R (page 41).


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 26-10-2002 à 23:30:29   

Reply

Marsh Posté le 26-10-2002 à 23:39:16    

Taz@PPC a écrit a écrit :

ebdic ou pas ca marche pas qu'est ce qui te dis que les majuscules ont de scodes plus petits que les minuscules (ou l'inverse) tes calculs vont merder suivant que les char sont signés ou pas


Je suis pas bien persuadé de la justesse de ton argument dans ce cas. Un int tient généralement sur 4 octets, un char sur 1. Donc, la signature ou non de c, on s'en moque, puisque le bit de signature n'est pas significatif dans le test des fonctions lower et upper. Je vois pas où est le problème. Seul cas : c'est quand les lettres qui composent l'alphabet ne sont pas contigues.


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

Marsh Posté le 27-10-2002 à 00:29:51    

mais qu'est ce que vous cherchez: cette fonction est standard!
 
quant à la page 43 du K&R, il est précisé  

Citation :

en ASCII seulement


CQFD
 
quant à ma remarque sur les types signé, je ferais quand meme gaffe...
 
pitié utilisez toupper et tolower
 


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

Marsh Posté le 27-10-2002 à 00:51:48    

pour ce genre de chose y'a aussi stricmp mais je sais pas si c vraiment standart

Reply

Marsh Posté le 27-10-2002 à 01:58:51    

Taz@PPC a écrit a écrit :

mais qu'est ce que vous cherchez: cette fonction est standard!
 
quant à la page 43 du K&R, il est précisé  

Citation :

en ASCII seulement


CQFD
 
quant à ma remarque sur les types signé, je ferais quand meme gaffe...
 
pitié utilisez toupper et tolower
 
 



:jap:


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 27-10-2002 à 01:59:25    

Taz@PPC a écrit a écrit :

mais qu'est ce que vous cherchez: cette fonction est standard!
 
quant à la page 43 du K&R, il est précisé  

Citation :

en ASCII seulement


CQFD
 
quant à ma remarque sur les types signé, je ferais quand meme gaffe...
 
pitié utilisez toupper et tolower
 
 



Acknowledged. OK, pour la remarque sur ASCII et EBCDIC. OK pour les fonctions standard. Cela dit, rien n'empêche de coder sa propre fonction, ne serait-ce que pour comprendre.


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

Marsh Posté le 27-10-2002 à 02:33:08    

En C, le calcul se fait sur un int (euh... je crois), et devrait marcher.
En C++, il devrait se faire sur un char, et les débordements peuvent être drôles.
Disons que ce serait déjà mieux comme ça:

Code :
  1. return c + ('A' - 'a');


 
Mais pourquoi prendre des risques et réinventer la roue ?

Code :
  1. #include <ctype.h>
  2. //copie en minuscule
  3. void strcpylow(char* target, const char* source){
  4. while(*target++= tolower(*source++);
  5. }
  6. //copie en majuscules
  7. void strcpyup(char* target, const char* source){
  8. while(*target++= toupper(*source++);
  9. }
  10. //transforme en minuscule
  11. void strlow(char* str){
  12. for( ; *str= tolower(*str) ; str++ );
  13. }
  14. //transforme en majuscules
  15. void strup(char* str){
  16. for( ; *str= toupper(*str) ; str++ );
  17. }


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 27-10-2002 à 11:34:05    

Amen.  :jap:  
 
Je suis d'accord: cette fonction est dans le K&R come beaucoup d'autres dans un but didactique et présente une imlémentation possible.
Voilà  :hello:


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

Marsh Posté le 27-10-2002 à 23:21:05    

Quoi quil en soit merci, ca maide bcp

Reply

Sujets relatifs:

Leave a Replay

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