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

Unexpected symbol when copying strings in C

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

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

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

    return ;
}

但是,由于字符出现在末尾,我的测试失败了。我做错了什么?

您必须终止目标字符串,并且您跳过了非字母的字符位置

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

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