Depuis quelques temps hier, je cherchais une fonction qui mettrait ma chaine de caractère en majuscules. Exemple : J'aime les oranges. -> J'AIME LES ORANGES. Au début, ma solution était un peu lourd
char chaine[100] = "allo les zeros";
int i = 0;
while (chaine[i] != '\0')
{
if (chaine[i] == 'a')
chaine[i] = 'A';
if (chaine[i] == 'b')
chaine[i] = 'B';
if (chaine[i] == 'c')
chaine[i] = 'C';
//...
//...
//...
//Et on continue pour tout les autres lettres de l’alphabet !
i++;
}
C'est trop long comme code source me direz-vous !
Et bien vous savez quoi ?
J'ai trouvé un solution encore meilleur.
VERSION 2 :
Comme vous l'avez sûrement bien appris dans le cours de m@teo, chaque caractère en C est représenté par un nombre. Cette conversion ce base sur la table ASCII :
ok ?
C'est bourré d'information ! Nous, ce qu'on veut, c'est Dec et Char (chr). Regardez plus vers la droite, les deux dernières colonnes. À la dernière, on peut voir les minuscules. À l'avant-derniere, on peut voir les Majuscules.
Prenons la lettre 'a' pour exemple. 'a' = 97 et 'A' = 65
97 - 65 = 32
vous avez compris ?
Exemple : 'd' = 100
100 - 32 = 68
68 = 'D'
Voici ma fonction :
void majuscule(char *chaine)
{
int i = 0;
//Tant que nous ne sommes pas arrivés a la fin de la chaine, continuer
while (chaine[i] != '\0')
{
/*si chaine[1] est une minuscule
*Car les minuscules se situent entre 97 et 122 inclusivement
*/
if (chaine[i] >= 97 && chaine[i] <= 122)
//Convertir en majuscules
chaine[i] = chaine[i] - 32;
i++;
}
}
Il y a sûrement déjà eut quelqu'un qui a penser à cette fonction et je ne dois sûrement pas être le premier qui la écrite... mais je me sentais trop comme un génie alors j'ai décider de publier mon code source (tuto) J'espère avoir pû aider quelqu'un d'entre vous. Si vous trouver une meilleure façon de faire cette fonction, faites moi le savoir
Salut, je débute en programmation depuis un mois environ, je suis les cours de matheo@21 et j'en suis au TP du pendu.
dans ce TP j'ai voulu aussi faire une fonction qui mettent en majuscule une chaine. Comme ca l'utilisateur n'a pas a ce préocuper de taper ou non en majuscule (dans le mode 2 joueurs que j'ai créé).
voici la fonction que j'ai écrit en m'inspirant de plusieurs solution existante.
Bonjour Guillaume211191,
Comme tu débutes visiblement sur le forum également, prends soin d'apprendre a poster du code avec les balises 'code' : le bouton
cela devient:
void chaineEnMajuscule(char*chaine)
{
int i=0;
for(i=0;chaine[i]!='\n';i++)
{
chaine[i]=toupper(chaine[i]);
}
}
@ EamjeeInc: C'est très bien d'avoir trouvé cela tous seul, cependant, je suis désolé de te décevoir, mais c'est archi-connu ^^" .
Ça l'était peut être moins il y a UN an... (enfin bon j'en doute... mais la fraicheur d'un codeur débutant qui crois avoir trouvé un truc génial ca fait toujours plaisir...)!
** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
Bonjour, tout le monde. J'en profite pour poser quelques questions:
J'ai lu dans un bouquin en C qu'il y a des fonctions standard qui renvoie si le caractère envoyé est une lettre. Une autre, un chiffre, etc...
Mais le livre, je ne le verrais pas avant deux semaines, et sur internet, je n'arrive pas à les trouver. Si quelqu'un savait, j'en serais ravi
Sinon, j'attendrais...
Demandez à l’utilisateur de saisir une phrase et mettez tous les « a » en majuscule. Demandez à l’utilisateur de saisir une phrase et mettez-la en majuscule. Demandez à l’utilisateur de saisir une phrase et le caractère au milieu de la phrase : Mettez-le en majuscule s’il est une lettre, Remplacez-le par # s’il est un espace Remplacez-le par ** s’il est un chiffre
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Objectif Zéro Bug - le test logiciel professionnel | L'électronique de zéro | Tableaux & pointeurs | Pointeurs sur fonctions | Lecture/écriture binaire
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.