La conversion Char * en Majuscules dans C
Je suis en train de convertir un char *
majuscules en c, mais la fonction toupper()
ne fonctionne pas ici.
Je vais essayer d'obtenir le nom de la valeur de temp, le nom étant avant tout le côlon, dans ce cas c'est "Test", et puis je veux mettre en majuscule le nom pleinement.
void func(char * temp) {
//where temp is a char * containing the string "Test:Case1"
char * name;
name = strtok(temp,":");
//convert it to uppercase
name = toupper(name); //error here
}
J'obtiens le message d'erreur que la fonction toupper attend un int, mais reçoit un char *. La chose est, je dois utiliser des char *s, puisque c'est ce que la fonction est de prendre en, (je ne peux pas vraiment utiliser des tableaux de char ici, puis-je?).
Toute aide serait grandement appréciée.
Vous devez vous connecter pour publier un commentaire.
toupper()
convertit un seulchar
.Il suffit d'utiliser une boucle:
Détail: La Bibliothèque standard de la fonction
toupper(int)
est définie pour tous lesunsigned char
etEOF
. Depuischar
peut être signé, convertirunsigned char
.Certains OS du soutien d'un appel de fonction qui fait cela:
upstr()
etstrupr()
toupper()
ne fonctionne que sur un seul personnage. Mais il y astrupr()
qui est ce que vous voulez pour un pointeur vers une chaîne de caractères.strupr
n'est pas standard. Pour autant que je sais que c'est seulement pris en charge par Microsoft de la bibliothèque.toupper()
fonctionne sur un seul élément (int
argument de valeur, allant de la même façon queunsigned char
ou EOF) à la fois.Prototype:
Vous avez besoin d'utiliser une boucle pour la fourniture d'un élément à un moment de votre chaîne.
Pour ceux d'entre vous qui veulent en majuscules d'une chaîne et de le stocker dans une variable (c'était ce que je cherchais quand j'ai lu ces réponses).
Remarque: Si vous voulez une chaîne de caractères en minuscules au lieu de cela, le changement
toupper(s[a])
àtolower(s[a])
.unsigned long int s_len
vsunsigned s_len
ou encore mieuxsize_t s_len
? Semble étrange d'utiliserunsigned long s_len
etint a
dansa < s_len
. Je m'attends à des variables du même type.