PDA

Visualizza la versione completa : [C] Trasformazione stringa in Maiuscolo


agostinomiranda
18-11-2006, 20:22
Salve!!!
Ho la necessitÓ di trasformare una stringa da Minuscolo a Maiuscolo!!!
C'e' qualche funzione in particolare?

oppure devo fare il solito ciclo for con l'algoritmo ASCI


In che libreria si trova? e come si chiama?

Lak3d
18-11-2006, 20:44
#include <ctype.h>
int toupper(int c)

oregon
18-11-2006, 21:38
Quella lavora su un carattere ... e' meglio



#include <string.h>
char *strupr(char *)

Lak3d
18-11-2006, 22:08
beh, chiaramente andrebbe inserita in un ciclo che scorre tutta la stringa...

Per˛ fra i prototipi contenuti nell'header string non trovo la strupr... come mai?

oregon
18-11-2006, 22:48
La strupr non e' ANSI C ma e' di uso comune ed e' utilizzabile con tanti compilatori ...

Che poi equivale a



char * cp;
for (cp=string; *cp; ++cp)
if ('a' <= *cp && *cp <= 'z')
*cp += 'A' - 'a';

Xaratroom
20-11-2006, 18:01
Prova questo:

void StrMod (char * stringa)
{
while (*stringa != '\0')
{
*stringa &= 223;
stringa++;
}
}

Dovrebbe funzionare, Es:

a = 61h = 0110.0001

A = 41h = 0100.0001

223 = 1101.1111
(('a' - 'A') = 20h; ffh-20h = dfh; dfh = 223)

oregon
20-11-2006, 18:08
Originariamente inviato da Xaratroom
Prova questo:

void StrMod (char * stringa)
{
while (*stringa != '\0')
*stringa &= 223;
}

Dovrebbe funzionare, Es:

a = 61h = 0110.0001

A = 41h = 0100.0001

223 = 1101.1111

Gia' ... ma se la stringa contenesse

codice001!

... ?

Xaratroom
20-11-2006, 18:19
In effetti trasforma maiuscole in minuscole
30h = 0011.0000

la funzione modificherebbe 30h in 10h quindi un cotrollo non lo toglie nessuno:

void StrMod (char * stringa)
{
while (*stringa != '\0')
{
if (*stringa >= 'a' && *stringa <= 'z')
{
*stringa &= 223;
}
stringa++;
}
}

oregon
20-11-2006, 18:21
Ecco ... quindi il tuo codice si avvicina al mio ...

Loading