Mettre en majuscule la premiere lettre

Bonjour

Pourrais avoir une idee de comment creer un compteur permettant de mettre la premiere lettre d une chaine de caractere en majuscule puis le reste en minuscule.

je desire juste des explications au mieux un algorithme et non un code tout fait

Merci.

Tu cherches à modifier la première lettre d’une chaine de caractère ? oui mais avec quoi un shell ?

Bonsoir Clochette

je veux ecrire une fonction qui met les premieres lettres d une chaine de caractere en majuscule puis le reste en minuscule je precise que c est en C.

Bonjour

Je suppose que tu voulais plutôt écrire :
le premier caractère d’une chaîne de caractères
Sinon, il va falloir préciser quel est le nombre de caractères que tu voudrais mettre en majuscule.


Quelques pistes :

  • Certains caractères (comme par exemple les chiffres) ne peuvent pas être mis en majuscule.
  • Dans la table des caractères ASCII, la différence entre le code d’un caractère en majuscule et minuscule est de 20 (en hexadécimal)

Donc, si l’encodage des caractères contenus dans la chaîne de caractères à traiter
est compatible avec la table des caractères ASCII

et si le premier caractère de la chaîne de caractères est bien une lettre minuscule entre a et z
(donc si le code hexadécimal du caractère est compris entre 61 et 7a inclus )

alors, pour obtenir le caractère en majuscule correspondant,
il faudra soustraire la valeur hexadécimale 20
au code hexadécimal du caractère minuscule à convertir en majuscule.


EDIT :

Bien sûr, cette méthode ne prendra pas en compte :

  • les caractères accentués
  • les chiffres qui seraient en indice ou exposant

Si besoin tu peux aller voir tous les caractères Unicodes

3 J'aime

En Python :

>>> "fnbin nebudt. bdve ejb".title()
'Fnbin Nebudt. Bdve Ejb'
>>> "fnbin nebudt. bdve ejb".capitalize()
'Fnbin nebudt. bdve ejb'
>>> "fnbin nebudt. bdve ejb".upper()
'FNBIN NEBUDT. BDVE EJB'

[Hors sujet ]

Dans une ligne de commande(s) de l’interpréteur bash :

Si tu veux mettre le premier caractère d’un mot en majuscule
tu mets le curseur juste avant ou sur le premier caractère du premier mot à modifier (une fois fait, ça passera au mot suivant)
et tu tapes le raccourcis clavier Alt+C (<=> Capitalize)

Si tu veux toutes les lettres d’un mot en majuscule,
tu mets le curseur sur un caractère du premier mot à modifier (une fois fait, ça passera au mot suivant)
et tu tapes le raccourcis clavier Alt+U (<=> Uppercase)

Si tu veux toutes les lettres d’un mot en minuscule,
tu mets le curseur sur un caractère du premier mot à modifier (une fois fait, ça passera au mot suivant)
et tu tapes le raccourcis clavier Alt+L (<=> Lowercase)

[/Hors sujet ]

2 J'aime

merci Nicola mais je le veux en C

Merci MicP

Pour tes reponses edifiantes

Salut,
il existe les fonctions tolower(int c) et toupper(int c) pour passer respectivement un caractère en minuscule/majuscule.
Donc en C, pour un string tu fais toupper(chaine[0]) puis tu boucle en tolower(chaine[i]) jusqu’à ce que tu atteignes le caractère nul ( \0 )

Merci pour ton message

oui donc c’est vraiment les sujet de 42, je sais pas si ton objectif est de le faire , j’arrive peut etre trop tard dcp mais tu dois verifier toute les conditions avant t’as lettre pour voir si tu dois la mettre en Maj en soustraiant 32 pour passer de minuscule a majuscule sur la table ascii. pcq si c’est bien le sujet que je crois tu n’as encore que le droit a write de unistd.h

Bonjour
moa

En effet ce sont les sujets de 42 etant autodidacte j ai eu du mal a comprendre la methode consistant a soustraire les valeurs j ai trouve une autre methode mais si tu peux m eclairer un peu plus j en serai ravie

salut
Avec plaisirs en gros comme seul la fonctions write est autorisée tu dois passer par la table ascii (man ascii ou internet pour les valeurs ) les minuscule étant après les maj dans la table et étant sépare par 7 char pour passez de a (97) > A (65) tu fait -32 . Parce que tu peut attribuer des valeurs décimales a un char. j’espère avoir été claire si tu a des questions j’essayerai d’y répondre.