2012-04-04 142 views
-1

我需要能夠在字符串中轉換大小寫,以便"Hello"變爲"hello"。最終,我需要比較它們。將包含大寫字母的字符串轉換爲小寫字母

我將如何轉換:

char *string = "HEllO"; 

字符串"hello"

+0

你在什麼地方? – 2012-04-04 23:45:43

+0

你想要比較什麼?你只需要知道輸入的字符串是否包含大寫字母? – kay 2012-04-04 23:55:22

+0

所以你最終想創建一個'compareToIgnoreCase'方法嗎?您可以通過將字母轉換爲小寫字母來進行比較,而不是保存整個字符串。 – twain249 2012-04-04 23:55:54

回答

3

首先,你的字符串是不正確聲明,它應該是:

char *string = "Hello"; 

現在,要轉換爲小寫,試試這個:

char *lowercase(const char *str) 
{ 
    int length = strlen(str); 
    char *dup = malloc(length + 1); 
    strcpy(dup, str); 

    for (int i = 0; i < length; i++) 
    { 
     dup[i] = tolower(dup[i]); 
    } 

    return dup; // remember to free when done! 
} 
+2

他對字符串的定義有什麼問題? '「HEllO」'是一個有效的字符串。 – twain249 2012-04-04 23:54:38

+0

我想理查德的意思是[修訂3](http://stackoverflow.com/revisions/1143ed2a-0333-4495-b243-3d81f560f3c8/view-source)你的問題... – kay 2012-04-05 00:03:45

2

簡單地執行此內聯。

char string[] = "Hello"; 
    char * ptr; 

    for (ptr = string; *ptr != '\0'; ++ptr) 
    { 
     *ptr = tolower(*ptr); 
    } 
+0

字符串文字是常量。您的代碼在運行時會出現seg錯誤。 'char string [] = ...'會起作用。 – kay 2012-04-04 23:50:45

+0

(編輯:凱在我面前)至少向他解釋爲什麼這不起作用 – James 2012-04-04 23:52:14

+0

更正,是的行爲將是「未定義」。 – junglecat 2012-04-04 23:58:36

相關問題