C语言排错#include <stdio.h> #include <stdlib.h> unsigned int NumofChar(char * str,char ch) { int count=0; char *p=str; while(*p!='\0') { if((*p++)==ch) {count++;} } return count; } 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++; }a return s; } int main() { char str[100]; printf("Please input the string!\n"); gets(str); char c; printf("Please input the character!\n"); scanf("%c",&c); unsigned int count=NumofChar(str,c); if(count==0) { printf("Not found!"); return 0; } printf("The number of %c is %d!\nWhich one do you want to delete?Please input the serial number:\n",c,count); int sn;//第几个数字 scanf("%d",&sn); printf("%s",DelChar(str,c,sn)); return 0; }
时间: 2024-01-16 21:03:25 浏览: 27
在函数 `DelChar` 的第 21 行,多了一个 `a` 字符,需要删除。此外,在删除字符的过程中,应该先把 `s` 指针移动到要删除的字符位置,然后再进行删除操作。修改后的代码如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
unsigned int NumofChar(char * str,char ch) {
int count=0;
char *p=str;
while(*p!='\0')
{
if((*p++)==ch)
{count++;}
}
return count;
}
char * DelChar(char * str,char ch,unsigned int n) {
char *s=str;
int co=0;
while(co<n && *s!='\0')
{
if(*s==ch)
{
co++;
char* p=s;
while (*p!='\0')
{
*p=*(p+1);
p++;
}
s--;
}
s++;
}
return str;
}
int main() {
char str[100];
printf("Please input the string!\n");
gets(str);
char c;
printf("Please input the character!\n");
scanf("%c",&c);
unsigned int count=NumofChar(str,c);
if(count==0)
{
printf("Not found!");
return 0;
}
printf("The number of %c is %d!\nWhich one do you want to delete?Please input the serial number:\n",c,count);
int sn;//第几个数字
scanf("%d",&sn);
printf("%s",DelChar(str,c,sn));
return 0;
}
```