Oppure

Loading
08/09/11 11:30
Liuk
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.

#include <stdio.h>
#include <string.h>

#define DIM 100

void clear(void);
void pEnter(void);
void setColor(int a, int b, int c);

int main()
{
    char parola[DIM];
    int err, i;
    clear();
    setColor(1, 0, 32);
    printf("\n cavallin-parola.c\n\n");
    setColor(1, 0, 1);
    do
    {
	printf(" Inserisci parola (max 30 car.): ");
        gets(parola);
        if(strlen(parola)>30)
    	    err=1;
    }
    while(err==1);
    printf("\n La parola inserita è: ");
    puts(parola);
    for(i=0; i<strlen(parola); i++)
    {
        tolower(parola[i]);
    }
    printf("\n La parola in minuscolo è: ");
    puts(parola);
    
    pEnter();
    clear();
    return 0;
}

void setColor(int a, int b, int c)
{
	printf("\e[%d;%d;%dm", a, b, c);
}

void clear(void)
{
    system("clear");
}

void pEnter(void)
{
	printf("\n Premi INVIO per continuare...\n");
	getchar();
}


Vorrei tanto capire cosa è sbagliato OMG
aaa
08/09/11 11:37
D@vide
parola[i] = tolower(parola[i]);


Tranquillo, il tuo GCC è sano e forte:rotfl:
aaa
08/09/11 11:56
nessuno
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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
08/09/11 19:55
lumo
Inoltre tolower() dovrebbe essere dichiarato in ctype.h
aaa
08/09/11 20:00
nessuno
Postato originariamente da lumo:

Inoltre tolower() dovrebbe essere dichiarato in ctype.h


Esatto
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
09/09/11 9:28
Piccola cosa da ricordare:
carattere maiuscolo = carattere minuscolo - 32
carattere minuscolo se compreso tra 97 e 122, di conseguenza:

string MaiuscString(string min)
{
    string temp = min;
    string str = "";
    int j = 0;
    while (min[j])
    {
        if ((min[j] >= (char)97) && (min[j] <= (char)122))
       {
             temp[j] = min[j] - 32; 
        }
        else
        {
              temp[j] = min[j];
         }
        j++;
    }
    str = temp;
    return str;
}


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: oppo.it/tabelle/…
:heehee: :heehee: :heehee: :heehee: :heehee: :heehee: :pat: