[ Smilebey @ 07.03.2005. 21:21 ] @
Pa eto ja bi trebao pretvoriti uneseni string koji se sastoji iz velikih slova u male. Npr. RONALDO u ronaldo. Ja sam mislio dodati na char 32 [jer a(97)-A(65)=32]. Mislim da me razumijete, ali mogu li dodati tipu char int vrijednost? Npr.
Code:
int i=97;
 char c=i;

Hvala unaprijed!!!
[ xxxrugby @ 07.03.2005. 21:49 ] @
Code:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
               
int main()
{
    int i = 0; char ch;
    char string[] = "RONALDO";
    
    while( string[i] != '\0' )
    {
        ch = string[i];
        if( isupper(ch) == 1 )
        {
            ch += 32;
        }
        string[i] = ch;
        i++;
    }
    printf("%s\n", string);

     system("PAUSE");
     return 0;
}

[ Marko Stankovic @ 08.03.2005. 00:45 ] @
Samo da dodam da u zaglavlju ctype.h postoji i funkcija tolower() cija je deklaracija:
Code:

int tolower(int ch);

Znaci ona radi tako sto ako je ch veliko slovo za koje postoji malo slovo onda funkcija vraca kod malog slova a ako ch nije slovo onda je povratna vrednost ch, pa kad koristis ovu funkciju nemas potrebe da vrsis proveru da li je u pitanju veliko slovo.
Tako da ako imas recimo string koji je niz karaktera mozes da prebacis u mala slova na sledeci nacin:

Code:

for(i=0;string[i];i++) string[i]=tolower(string[i]);



Inace u c-u tip char je u stvari celobrojni osmobitni tip podataka, tako da su dozvoljene sve operacije koje su dozvoljene nad tipom int, plus c vrsi automatsku konverziju izmedju int i char. Tako da slobodno sabiraj slova.
[ spaka-s @ 09.03.2005. 15:49 ] @
Postoji jos jedna verzija ako ne znas kolika je duzina rijeci i bukvalno si ogranicen da radis sa pozivima vec "giotovih stvari" :)
while(s[i++]!='\o')
{
if((s>='A')&&(s<='Z'))
s=s-('A'-'a');
i++;
}
}
Fora je sto od ASCI vrijednosti VEKLIKOG slova oduzimas ASCI razliku izmedju malih i velikih i dobijas "umanjeno" slovo :)
Poz
[ spaka-s @ 09.03.2005. 15:52 ] @
S tim sto dolje mora da bude s(i) kada se provjerava vrijednost u ASCI kodu i kada se dodaje ispada s(i)=s(i)-('A'-'a') , naravnop umjesto ovih malih zagrada stavljaju se srednje :) ali je bukvalno starnica to zaobisla , sto nazalost nisam znao .
[ X Files @ 09.03.2005. 16:07 ] @
Borland C++ Builder (sigurno i ostala ozbiljna okruzenja) imaju
vec gotove metode ili zasebne funkcije za rad sa stringovima.

Na primer:

NekiString = NekiString.UpperCase();

ili

NekiString = UpperCase( NekiString );



[ filmil @ 09.03.2005. 19:10 ] @
Citat:
Fora je sto od ASCI vrijednosti VEKLIKOG slova oduzimas ASCI razliku izmedju malih i velikih i
Ovo nije dobro rešenje jer radi samo za ASCII. Postoje mašine koje koriste EBCDIC kod.

Ispravno rešenje je funkcija toupper() iz zaglavlja ctype.h, koja radi nezavisno od koda koji se koristi.

f
[ deroko @ 14.03.2005. 16:14 ] @
Ma samo or 0x20 i imas mala slova.
Code:

#include <stdio.h>

int main(){
       char a = 'A';
       a|=0x20;
       printf ("%c\n", a);
       return 0;
       
}


[ yooyo @ 14.03.2005. 19:01 ] @
hmm.. a da probas strlwr(str) ili strupr(str) ?

yooyo