2015-03-30 100 views
0

我需要從字符串中過濾非字母字符並將所有內容都轉換爲小寫字母。我正在使用以下:在C中複製字符串時出現意外符號

void filter(char orig[], char filtered[]) { 

    int i; 
    for (i = 0; orig[i] != '\0'; ++i){ 
     if(isalpha(orig[i])){ 
      filtered[i] = tolower(orig[i]); 
     } 
    } 

    return ; 
} 

但是,我的測試失敗,因爲出現在最後的字符。我究竟做錯了什麼?

enter image description here

回答

2

您必須終止目標字符串,你跳過那些不阿爾法

void filter(char orig[], char filtered[]) { 

    int i, j = 0;        // separate index for filtered[] 
    for (i = 0; orig[i] != '\0'; ++i){ 
     if(isalpha(orig[i])){ 
      filtered[j++] = tolower(orig[i]); // inc index 
     } 
    } 
    filtered[j] = '\0';       // terminate string 
    return ; 
} 
字符位置