[C][Minuscules/majuscules]

Fermé
salemgaaloul Messages postés 1 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 3 octobre 2005 - 3 oct. 2005 à 22:27
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 13 mai 2014 à 23:59
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.

7 réponses

kmanber Messages postés 541 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 28 décembre 2008 256
3 oct. 2005 à 22:54
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
10
MetaHack Messages postés 14 Date d'inscription jeudi 17 juillet 2008 Statut Membre Dernière intervention 14 septembre 2010 32
9 nov. 2008 à 23:40
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();
}
5
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; 
} 
3
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
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.
0
metamaroc.com
9 nov. 2008 à 23:17
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();
}
2
*p=*p -'A'+'a';
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > scercro
9 mars 2009 à 12:54
Non !
De minuscule en majuscule, c'est bien : *p += 'A' - 'a';
0
#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");
}
0
voila c plus simple ;)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
13 mai 2014 à 23:59
Bonsoir,
bien que le sujet date déjà je poste juste ceux code alternatif au tien (@Max)


/* Mise en majuscule */
char f_UpChar(char c){
	
	return ( ((c)>='a') && ((c)<='z') ? ((c)-'a' + 'A') : (c) );
}

/* Mise en Miniscule */
char f_DownChar(char c){
	
	return ( ((c)<='A') && ((c)<='Z') ? ((c)-'A' + 'a') : (c) );
} 

1
hssissen Messages postés 844 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 9 janvier 2017 50
3 oct. 2005 à 22:32
UPCASE()?
0
Une fonction qui fait le boulo en 2 lignes :

char min(char car){
return ((car<'A') || (car>'Z')) ? (car) : (car+32);
}

Merci K&R
0