算法笔记练习 3.6 字符串处理 问题 E: 字符串去特定字符
题目
题目描述
输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。
输入
测试数据有多组,每组输入字符串s和字符c。
输出
对于每组输入,输出去除c字符后的结果。
样例输入
goaod
a
样例输出
good
思路
用指针 ps 遍历字符串 s,若和 c 不等,输出字符。
细节:
- 注意各个输入函数之间的配合,例如本题用 gets 读入字符串后,输入缓冲区中字符串后面的换行已经被 gets 消耗掉了,可以直接用 scanf 读字符;但是 scanf 读完字符后记得处理紧跟的换行,否则会被下一轮的 gets 读到
- 本题没给数据范围,感觉略坑,但是AC之后测试了一下字符串 s 真的很小,长度 40 就能装下
代码
#include <stdio.h>
#define MAX 40
int main(){
char s[MAX], c;
while (gets(s)){
scanf("%c", &c);
getchar(); // 处理换行
char *ps = s;
while (*ps != '\0'){
if (*ps != c)
putchar(*ps);
++ps;
}
putchar('\n');
}
return 0;
}