c – converti una stringa con maiuscole e minuscole in tutte le lettere minuscole

Qual è il modo migliore / più pulito per convertire una stringa di maiuscole e minuscole in una minuscola in C?

È nella libreria standard, ed è il modo più semplice che posso vedere per implementare tale funzione. Quindi sì, basta scorrere la stringa e convertire ogni carattere in minuscolo.

Qualcosa di banale come questo:

for(int i = 0; str[i]; i++){ str[i] = tolower(str[i]); } 

o se preferisci una nave, puoi usare questa di JF Sebastian:

 for ( ; *p; ++p) *p = tolower(*p); 

convertire in lettere minuscole equivale ad aumentare il bit 0x60:

 for(char *p = pstr;*p;++p) *p=*p>0x40&&*p<0x5b?*p|0x60:*p; 

(ovviamente per la codepage in latino)

Hai appena a che fare con le stringhe ASCII e non hai problemi di localizzazione? Allora sì, sarebbe un buon modo per farlo.

Se hai bisogno del supporto Unicode nella funzione minuscolo vedi questa domanda: Light C Unicode Library

Se saremo così sciatti da usare tolower() , fai questo:

 char blah[] = "blah blah Blah BLAH blAH\0"; int i=0; while(blah[i]|=' ', blah[++i]) {} 

Ma, beh, esplode un po ‘se gli dai dei simboli / numeri, e in generale è malvagio. Buona domanda per il colloquio, però.