C:
Omvandla en sträng till gemener
Hur gör man:
C har inte en inbyggd funktion för direkt konvertering av strängar till gemener, till skillnad från vissa högnivåspråk. Processen kan dock enkelt implementeras med hjälp av C-standardbibliotekets funktioner. Nedan följer en steg-för-steg-guide och ett exempel som illustrerar hur man konverterar en sträng till gemener.
#include <stdio.h>
#include <ctype.h>
void toLowerCase(char *str) {
while (*str) {
*str = tolower(*str);
str++;
}
}
int main() {
char text[] = "Hello, World!";
printf("Original: %s\n", text);
toLowerCase(text);
printf("Lowercase: %s\n", text);
return 0;
}
Exempelutmatning:
Original: Hello, World!
Lowercase: hello, world!
I detta exempel itererar toLowerCase
-funktionen igenom varje tecken i indatasträngen och konverterar det till motsvarande gemener med hjälp av tolower
-funktionen från ctype.h
. Modifieringen görs på plats, vilket ändrar den ursprungliga strängen.
Fördjupning
Funktionen tolower
, som används i exemplet ovan, är en del av C-standardbiblioteket, specifikt inom headerfilen ctype.h
. Den fungerar baserat på den aktuella lokalanpassningen, men för den standard “C” lokalanpassningen, hanterar den ASCII-teckenuppsättningen där ‘A’ till ‘Z’ konverteras till ‘a’ till ‘z’.
Historiskt sett var hanteringen av teckenkodning och gemener/kapitälerkonvertering i C tätt kopplad till ASCII-teckenuppsättningen, vilket begränsade dess användbarhet i internationella eller lokaliserade applikationer där tecken utanför ASCII-uppsättningen är vanliga. Moderna programmeringsspråk kan erbjuda inbyggda strängmetoder för att utföra gemener/kapitälerkonvertering med tanke på lokalanpassning och Unicode-tecken, vilket C saknar inbyggt.
I scenarier som kräver omfattande textmanipulation, särskilt med icke-ASCII-tecken, kan programmerare överväga att använda bibliotek som erbjuder bättre stöd för internationalisering, som ICU (International Components for Unicode). Men för de flesta applikationer som hanterar ASCII-text, är den demonstrerade metoden effektiv och okomplicerad. Den belyser Cs benägenhet att ge programmerare kontroll över datamanipulation, även om det kräver lite mer arbete jämfört med högnivåspråk.