[C][Minuscules/majuscules]

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

  1. 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
    1. 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();
      }
      1. *p=*p -'A'+'a';
      2. Contributeur
        @scercroNon !
        De minuscule en majuscule, c'est bien : *p += 'A' - 'a';
      3. #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");
        }
      4. voila c plus simple ;)
      5. Contributeur
        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...
    2. 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();
      }
      1. 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; 
        } 
        
        1. Contributeur
          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.
      2. Une fonction qui fait le boulo en 2 lignes :

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

        Merci K&R
        1. 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) );
          }