用C语言完善代码,用while,从字符串s1中删除字符串s2所包含的字符,记得补充注释。例如:s1为“helloword”,s2为“eo”,程序执行后,s1变为“hllwrd”,代码如下:#include <stdio.h> void main() { char s1[81]="helloword",s2[81]="eo"; char *p1=s1,*p2,*p3; // //; while(*p1) { p2=s2; while(*p2&&(// //)) p2++; if(*p2=='\0') *p3++=*p1; p1++; } // //; printf("%s\n",s1); getch(); }
时间: 2023-06-06 22:04:21 浏览: 77
以下是C语言完善代码:
```c
#include <stdio.h> // 标准输入输出头文件
#include <string.h> // 字符串头文件
void removeCharFromString(char *s1, char *s2) { // 定义函数名为removeCharFromString,函数接受两个指向char类型的指针参数,一个为要删除字符的字符串s1,一个为要删除的字符的字符串s2
int i, j, k; // 定义整数变量i、j、k
int n = strlen(s2); // 定义整数变量n,赋值为s2字符串的长度
for (i = j = 0; s1[i]; i++) { // for循环,两个计数器i和j都从0开始,当s1[i]不为空时,循环内执行以下内容:
for (k = 0; k < n && s1[i] != s2[k]; k++); // for循环,计数器k从0开始,当k小于n并且s1[i]不等于s2[k]时,k自增1
if (k == n) s1[j++] = s1[i]; // if语句,如果k等于n,说明在s2中没有找到s1[i]字符,此时将s1[i]赋值给s1[j],并将j自增1
}
s1[j] = '\0'; // 将s1的第j个字符赋值为'\0',即空字符,表示字符串的结尾
}
int main() {
char s1[100], s2[100]; // 定义两个char类型的字符串s1和s2,分别用来存储要删除字符的字符串和要删除的字符的字符串
printf("Enter string s1: "); // 打印字符串“Enter string s1: ”
gets(s1); // gets函数读取用户输入的字符串,并存储到s1中
printf("Enter string s2: "); // 打印字符串“Enter string s2: ”
gets(s2); // gets函数读取用户输入的字符串,并存储到s2中
removeCharFromString(s1, s2); // 调用removeCharFromString函数,传入s1和s2两个参数
printf("Updated string s1: %s\n", s1); // 打印更新后的字符串s1
return 0; // 返回0,表示程序正常运行结束
}
```
函数的主要逻辑就是遍历字符串s1中的每个字符,然后查找该字符是否在字符串s2中,如果不在就将它添加到新的字符串中。最后将新的字符串添加一个空字符,就完成了删除操作。主函数中通过gets函数读取用户输入的字符串s1和s2,然后调用removeCharFromString函数实现删除操作,并打印更新后的字符串s1。
阅读全文