Posez votre question Signaler

[C][Minuscules/majuscules]

salemgaaloul 3Messages postés 29 septembre 2005Date d'inscription - Dernière réponse le 19 avril 2012 à 17:50
URGENT !! Svp. c un exercice que j'ai pas trouver la solution.
comment ecrire une fonction qui fait la conversion d'uun caractère miniscule en un caractère majuscule en langage C. ?
sans utiliser la fonction toupper( ).
merci.
Lire la suite 

[C][Minuscules/majuscules] »

11 réponses
Réponse
+7
moins plus
tu prend les codes ascii
a=97
A=65
donc 97 devient 65

ca revient à soustraire 32, il faut quand même controler l'intervale et tenir compte de lettres accentuées

http://www.lookuptables.com/

voilà l'exemple inverse, à toi de l'adapter

#include <stdio.h>
#include <stdlib.h>

void
minuscule(char s[])
{
int index;

/* la chaîne est parcourue par index */
for (index= 0; s[index] != '\0'; index++)
/* si le caractère à la position index est majuscule*/
if (s[index] >= 'A' && s[index] <= 'Z')
/* le remplacer par son équivalent en minuscule */
s[index]= s[index] - 'A' + 'a';
}

char salut[]= "chaine de caractère à traiter\n";

int main(void)
{
minuscule(salut);
puts(salut);
return EXIT_SUCCESS;
}


bonne chance
Ajouter un commentaire
Réponse
+3
moins plus
de Minuscules ---> majuscules avec la notion de pointeur en C

#include<stdio.h>
#include<conio.h>
#include<string.h>
char* majuscule(char *s)
{
char *p;
for (p=s;*p;p++)
if (*p >= 'a' && *p <= 'z')
*p=*p +'A'-'a';// ou bien -32
return s;
}
main()
{
char s1[65];
printf("donner une chaine s1: ");
gets(s1);
printf("la chaine en majuscule :");
puts(majuscule(s1));
getch();
}
Ajouter un commentaire
Réponse
+0
moins plus
UPCASE()?
Ajouter un commentaire
Réponse
+0
moins plus
de Minuscules ---> majuscules avec la notion de pointeur en C

#include<stdio.h>
#include<conio.h>
#include<string.h>
char* majuscule(char *s)
{
char *p;
for (p=s;*p;p++)
if (*p >= 'a' && *p <= 'z')
*p=*p +'A'-'a';// ou bien -32
return s;
}
main()
{
char s1[65];
printf("donner une chaine s1: ");
gets(s1);
printf("la chaine en majuscule :");
puts(majuscule(s1));
getch();
}
the don - 15 mai 2011 à 13:08
#include<stdio.h>
#include<stdlib.h>
main()
{
char s[100];
int i=0;
printf("entrez une chaine \t");
gets(s);
while(s[i]!='\0')
{
if(97<=s[i])
s[i]-=32;
i++;}

puts(s);
system("pause");
}
the don - 15 mai 2011 à 13:10
voila c plus simple ;)
fiddy- 15 mai 2011 à 20:30
Je trouve que *p='A' - 'a' bien plus simple en plus d'être plus lisible.
En plus tu ne vérifies pas la borne inférieure !
La fonction gets() ne doit pas être utilisée. On utilise plutôt la fonction fgets...
Et enfin, le post date de plus de deux ans...
Ajouter un commentaire
Réponse
+0
moins plus
Pourquoi se casser la tête ?

#include <stdio.h> 

int main(void) 
{ 
     char a; 

     while ( a != '\n' ) 
     { 
         scanf("%c", &a); 
         printf("%c", a - 32); 
     } 
     printf("\n"); 
     return 0; 
} 
fiddy- 19 avril 2012 à 17:50
Et pourquoi déterrer un topic avec un programme moins bon que ceux proposés ? Pour info il ne faut jamais faire une comparaison avec une variable non initialisée. Et aussi ne pas oublier de vider le flux clavier.
Ajouter un commentaire
Ce document intitulé « [C][Minuscules/majuscules] » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?