C语言查错函数char * DelChar(char * str,char ch,unsigned int n) { char *s=str; int co=0; while(co==n) { if(*(s++)==ch) {co++;} } *s--; *s++=*(s+1); *s='\0'; return s; }
时间: 2024-02-19 12:59:07 浏览: 60
数据库基础测验20241113.doc
这段代码中有几个问题:
1.while循环条件不正确,应该是co < n,否则循环根本不会执行。
2.在while循环中,如果找到了要删除的字符,co计数器的自增应该放在if语句里面,否则计数器会一直增加。
3.循环结束后,指针s指向的是字符串末尾的\0,而不是要删除的字符。因此,删除字符的操作应该在循环内部进行,而不是在循环结束后。
4.函数的返回值是指向字符串末尾的指针,而不是删除后的字符串。因此,需要在删除字符后重新定义一个指针变量,指向删除后的字符串,并将其返回。
下面是修改后的代码:
```c
char* DelChar(char* str, char ch, unsigned int n) {
char* s = str;
int co = 0;
while (co < n) {
if (*s == ch) {
co++;
for (char* p = s; *p != '\0'; p++) {
*p = *(p + 1);
}
s--;
}
s++;
}
return str;
}
```
阅读全文