Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Come si usano tolower e toupper?
Forum - C/C++ - Come si usano tolower e toupper?

Avatar
Liuk (Normal User)
Rookie


Messaggi: 21
Iscritto: 01/09/2011

Segnala al moderatore
Postato alle 13:30
Giovedì, 08/09/2011
Sono veramente frustato.
Programmo da 5 anni e ancora mi chiedo se ho una versione taroccata di GCC.

Ho incluso la libreria string.h e data una stringa la trasformo tutta in minuscolo agendo sui singoli caratteri con un ciclo for. Normale no? Solo che a me non cambia una mazza.

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define DIM 100
  5.  
  6. void clear(void);
  7. void pEnter(void);
  8. void setColor(int a, int b, int c);
  9.  
  10. int main()
  11. {
  12.     char parola[DIM];
  13.     int err, i;
  14.     clear();
  15.     setColor(1, 0, 32);
  16.     printf("\n cavallin-parola.c\n\n");
  17.     setColor(1, 0, 1);
  18.     do
  19.     {
  20.         printf(" Inserisci parola (max 30 car.): ");
  21.         gets(parola);
  22.         if(strlen(parola)>30)
  23.             err=1;
  24.     }
  25.     while(err==1);
  26.     printf("\n La parola inserita è: ");
  27.     puts(parola);
  28.     for(i=0; i<strlen(parola); i++)
  29.     {
  30.         tolower(parola[i]);
  31.     }
  32.     printf("\n La parola in minuscolo è: ");
  33.     puts(parola);
  34.    
  35.     pEnter();
  36.     clear();
  37.     return 0;
  38. }
  39.  
  40. void setColor(int a, int b, int c)
  41. {
  42.         printf("\e[%d;%d;%dm", a, b, c);
  43. }
  44.  
  45. void clear(void)
  46. {
  47.     system("clear");
  48. }
  49.  
  50. void pEnter(void)
  51. {
  52.         printf("\n Premi INVIO per continuare...\n");
  53.         getchar();
  54. }



Vorrei tanto capire cosa è sbagliato OMG

PM Quote
Avatar
D@vide (Member)
Expert


Messaggi: 450
Iscritto: 30/06/2010

Segnala al moderatore
Postato alle 13:37
Giovedì, 08/09/2011
Codice sorgente - presumibilmente Plain Text

  1. parola[i] = tolower(parola[i]);



Tranquillo, il tuo GCC è sano e forte:rotfl:

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:56
Giovedì, 08/09/2011
Testo quotato

Postato originariamente da Liuk:

Programmo da 5 anni ...

Ho incluso la libreria string.h ...



E dopo 5 anni non sai che string.h *non* è una libreria ma un file header?

In ogni caso, non leggi la documentazione?

******************
int tolower ( int c );
Convert uppercase letter to lowercase
******************

Converts parameter c to its lowercase equivalent if c is an uppercase letter and has a lowercase equivalent. If no such conversion is possible, the value returned is c unchanged.

Parameters
c
Uppercase letter character to be converted, casted to an int, or EOF.

Return Value
The lowercase equivalent to c, if such value exists, or c (unchanged) otherwise. The value is returned as an int value that can be implicitly casted to char.


*****************



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 412
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 21:55
Giovedì, 08/09/2011
Inoltre tolower() dovrebbe essere dichiarato in ctype.h

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:00
Giovedì, 08/09/2011
Testo quotato

Postato originariamente da lumo:

Inoltre tolower() dovrebbe essere dichiarato in ctype.h



Esatto


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 11:28
Venerdì, 09/09/2011
Piccola cosa da ricordare:
carattere maiuscolo = carattere minuscolo - 32
carattere minuscolo se compreso tra 97 e 122, di conseguenza:

Codice sorgente - presumibilmente C#

  1. string MaiuscString(string min)
  2. {
  3.     string temp = min;
  4.     string str = "";
  5.     int j = 0;
  6.     while (min[j])
  7.     {
  8.         if ((min[j] >= (char)97) && (min[j] <= (char)122))
  9.        {
  10.              temp[j] = min[j] - 32;
  11.         }
  12.         else
  13.         {
  14.               temp[j] = min[j];
  15.          }
  16.         j++;
  17.     }
  18.     str = temp;
  19.     return str;
  20. }



scusa per eventuali errori logici e/o sintattici ma sono di fretta.....
Comunque questo vale per l' ANSI C, ti consiglio di dare un' occhiata qui per capire meglio cosa ho scritto: http://www.oppo.it/tabelle/tabella_ascii.htm
:heehee: :heehee: :heehee: :heehee: :heehee: :heehee: :pat:

PM Quote