Онлайн компилятор C

#include <stdio.h> void delete_char(char s[], char c){ int m=0,n=0; char a[1000]={0}; while(s[n]!='\0'&&s[n]!='\n'&&s[n]!='.'){ if(s[n]!=c){ a[m]=s[n]; m++; } n++; } //for(int i=0;i<m;i++){ // s[i]=a[i]; // printf("%c",s[i]); //} } int main() { char dst[1000]="banana",n; scanf("%c",&n); delete_char(dst,n); return 0; }
这段代码试图删除字符串中的指定字符,但存在几个问题。

函数 `delete_char` 创建了一个临时数组 `a` 来存储过滤后的字符,但最后没有将结果复制回原字符串 `s`,也没有输出结果。主函数中只读取了一个字符并调用函数,但没有看到任何输出。

- 函数 `delete_char` 中,你过滤了字符并存到 `a` 中,但最后没有把 `a` 的内容放回 `s`,也没有打印 `a`。所以调用后原字符串没有变化,也没有输出。
- 主函数中,你只读取了字符并调用了函数,但没有打印删除后的结果。你需要决定是让函数直接修改原字符串,还是让函数返回新字符串,或者直接在函数内打印结果。