2015-03-30 73 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 ; 
} 
字符位置
相关问题