Conversion d'une chaine de caracteres

Conversion d'une chaine de caracteres - C - Programmation

Marsh Posté le 03-05-2007 à 21:04:51    

Bonjour,
Je cherche a convertir une chaine de caracteres minuscules->MAJUSCULES.
J'ai essayé avec toupper() mais apparement cette fonction n'accepte qu'un caractere hors moi ce dont je dispose c'est d'un pointeur .
Y'a t'il une solution?
Merci

Reply

Marsh Posté le 03-05-2007 à 21:04:51   

Reply

Marsh Posté le 03-05-2007 à 21:09:52    

"strupr" mais je ne sais pas si ça existe sur tous les sytèmes, sinon tu écris toi même la boucle sur tous les caractères de la chaîne.

Reply

Marsh Posté le 03-05-2007 à 21:18:46    

Est ce que ça marche sous linux et unix?

Reply

Marsh Posté le 03-05-2007 à 22:14:14    

Tout ce que je peux dire, ce n'est pas ANSI , je pense que ça n'existe pas sous linux/unix (ça doit dépendre de tes lib) , mais en fait je n'en sais rien.
Ecris-toi la boucle, ce sera aussi simple !

Reply

Marsh Posté le 03-05-2007 à 22:39:43    

Salut,

 

Si je ne dis pas de connerie pour forcer un caractère à se mettre en majuscule il suffit de passer le bit 5 à zéro, donc une instruction comme ça devrait marcher :

 
Code :
  1. variable &= 0xDF;
 

Je suppose qu'il suffit de faire ça en boucle jusqu'à avoir un null.

Message cité 1 fois
Message édité par dap++ le 03-05-2007 à 22:40:54
Reply

Marsh Posté le 03-05-2007 à 23:17:51    

Merci à tous,
Il y a pleins dastuces, on peut aussi verifier que le caractere est une minuscule et ajouter un nombre pour avoir la majuscule etc etc etc.
Bon je vais faire sans fonction établie.
Salut et encore merci.

Reply

Marsh Posté le 04-05-2007 à 07:20:02    

Trap D a écrit :

"strupr" mais je ne sais pas si ça existe sur tous les sytèmes, sinon tu écris toi même la boucle sur tous les caractères de la chaîne.

 

Fonction inconnue au bataillon des fonctions ANSI C et POSIX. C'est donc propre à ton système ou à une bibliothèque tierse que tu auras installée.

 
dap++ a écrit :

Salut,

 

Si je ne dis pas de connerie pour forcer un caractère à se mettre en majuscule il suffit de passer le bit 5 à zéro, donc une instruction comme ça devrait marcher :

 
Code :
  1. variable &= 0xDF;
 

Je suppose qu'il suffit de faire ça en boucle jusqu'à avoir un null.


J'attends avec impatience de voir ce que ça donnera quand tu traduiras "Ce week-end, je dépenserai 20€ à la foire." avec cette méthode.  [:cerveau hahaguy]

   


yartempion > toupper() fait très bien ce que tu cherches à faire. Il te suffit d'écrire une boucle while() pour convertir la chaîne en entier, la condition d'arrêt étant la rencontre du caractère de fin de chaîne '\0'

Message cité 1 fois
Message édité par Elmoricq le 04-05-2007 à 07:21:29
Reply

Marsh Posté le 04-05-2007 à 13:53:09    

Elmoricq a écrit :

J'attends avec impatience de voir ce que ça donnera quand tu traduiras "Ce week-end, je dépenserai 20€ à la foire." avec cette méthode.  [:cerveau hahaguy]


 
Tiens c'est pas con. :o

Reply

Marsh Posté le 04-05-2007 à 14:45:34    

tu peux essaier un truc comme ca, c'est pas super propre, enfin du moins t'es obligé de faire une boucle :  
 

Code :
  1. int main ()
  2. {
  3.      char mastring[] = "Salut ca va BIeEN par @@ exemple"
  4.      for (int i=0;i<strlen(mastring);i++)
  5.      {
  6.          if (mastring[i]>= 'a' && mastring[i] <= 'z')
  7.                 mastring[i] -= 0x20;
  8.      }
  9.      return EXIT_SUCCESS;
  10. }

Message cité 1 fois
Message édité par tarteens le 04-05-2007 à 15:09:35

---------------
il y a 10 types de personnes, ceux qui comprennent le binaire, et les autres - Profile Path of Exile
Reply

Marsh Posté le 04-05-2007 à 14:51:07    

MAIS NON BOURDEL §§§ /FOU/ /FOU/ /MECHANT/

 

Déjà ta chaîne elle fait 32 de longueur, donc mastring doit faire au MINIMUM 33 de long.

 

Enfin, pourquoi s'entêter à ne pas utiliser toupper() qui est fait pour ça ? C'est pas assez bien pour vous, ça fait pas assez 3l33t ?

 
Code :
  1. char blabla[] = "sdomfjeso sporjzpOIUYHIRUZT ¨Zs ,sncçs_qus'é&è";
  2.  
  3. for(unsigned i = 0; blabla[i] != '\0'; ++i)
  4.   blabla[i] = toupper(blabla[i]);



Message édité par Elmoricq le 04-05-2007 à 14:51:26
Reply

Marsh Posté le 04-05-2007 à 14:51:07   

Reply

Marsh Posté le 04-05-2007 à 14:57:06    

lol dsl de la grosse boulette, j'ai modifier le code, ca marchera déjà mieux


---------------
il y a 10 types de personnes, ceux qui comprennent le binaire, et les autres - Profile Path of Exile
Reply

Marsh Posté le 04-05-2007 à 14:59:44    

Ton strlen() va être réévalué à chaque passage de la boucle [:dawa]

Reply

Marsh Posté le 04-05-2007 à 22:01:56    

tarteens a écrit :

Code :
  1. if (mastring[i]>= 'a' && mastring[i] <= 'z')
  2.                 mastring[i] -= 0x20;


Pas portable, ça ne "marche" que pour le code ASCII pas pour l'EBCDIC.

Reply

Sujets relatifs:

Leave a Replay

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