我需要从字符串中过滤非字母字符并将所有字符转换为小写。我正在使用以下内容:
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 ;
}
但是,由于字符出现在末尾,我的测试失败了。我做错了什么?
最佳答案
您必须终止目标字符串,并且您跳过了非字母的字符位置
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 ;
}
关于c - 在 C 中复制字符串时出现意外符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29353008/