我想替换ANSI C字符串中的所有“a”字符。下面是我的代码:
#include <stdio.h>
#include <stdlib.h>
void sos(char *dst){
while(*dst){
if(*dst == 'a')
*dst = '\0';
dst++;
}
}
int main(void){
char str[20] = "pasternak";
sos(str);
printf("str2 = %s \n", str);
return 0;
}
当我运行它时,结果是:
str2 = p
但应该是
str2 = psternk
它可以与其他字符(如“b”等)配合使用。我试图将空值赋给*dst,但在编译期间出错。
现在如何删除“a”字符?
最佳答案
'\0'
是C语言工具识别字符串结尾的方式。为了实际删除一个字符,您需要向前移动所有后续字符。
void sos(char *dst) {
int offset = 0;
do {
while (dst[offset] == 'a') ++offset;
*dst = dst[offset];
} while (*dst++);
}
关于c - 如何在ANSI C中用NULL替换字符串中的字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20031548/