2016-09-27 43 views
1

你好,我對C很新,有一個簡單的問題。使用isalpha和空格刪除

我做了一個函數,它需要一個字符串,該字符串應該取出空格和特殊字符,並將所有大寫字母轉換爲小寫字母。

但是當它運行它只能將大寫字母轉換爲小寫字母。

void txtedit(char *str){ 

int i; 

for(i=0; i < strlen(str); i++) { 

    if (isalpha(str[i])) { 
     str[i] = tolower(str[i]); 

    }//end if 
}//end for 
}//end void function 

任何幫助將不勝感激。

+2

你覺得它會「刪除」空白嗎? –

+1

你需要另一個變量,比如'int j = 0;'然後'str [j ++] = tolower(str [i]);'當你完成時,不要忘記寫一個新的字符串終結符。這將只保留字母字符,更接近您的目標。如果你想保留字母和數字,把'isalpha'改成'isalnum'。 –

+0

以「從字符串中取出空格和特殊字符」爲目標,請務必在末尾留出「\ 0」。 – chux

回答

0

爲了擺脫非字母字符和空格,你可以有一開始while循環(在你的for循環)說像

(也可以確保在字符新的字符串是AZ或az,而不是一個空格),

,然後創建一個名爲J可填補字母字符變量:

 for(j=i;str[j]!='\0';j++) 
     { 
      str[j]=str[j+1]; 
     } 
     str[j]='\0'; 
    } 
} 

然後打印字符串,並希望工程。讓我知道發生了什麼!