在C中复制字符串时出现意外的符号

时间:2015-03-30 17:59:33

标签: c string copy

我需要从字符串非alpha字符过滤并将所有内容转换为小写。我使用以下内容:

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

1 个答案:

答案 0 :(得分:2)

您必须终止目标字符串,并且已跳过不是alpha

的字符位置
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 ;
}