题目如图:
题目意思很明显了,我们的思路其实也挺简单的,换句话说,删掉一个然后重构数组,补上那个空,一个个字符推进一格就行了嘛,不用想得太复杂(简单的来说就是偷懒)。
代码如下 |
复制代码 |
#include<stdio.h>
#include<string.h>
void delchar(char s[], char c);
int main(void)
{
char c;
char s[80];
printf("Input a string: ");
gets(s);
printf("Input a char: ");
scanf("%c", &c);
delchar(s, c);
printf("After deleted,the string is:%s", s);
return 0;
}
void delchar(char s[], char c)
{
int i, j, len;
len = strlen(s);
for(i = 0; i < len; i++) {
if(s[i] == c) {
for(j = i; j < len; j++)
s[j] = s[j + 1];
i = i - 1;
}
}
}
|
程序是同学问我了之后我改的,所以不必太在意和我的风格不符=。=
根据评论,我们改进代码(评论里师匠写的)
代码如下 |
复制代码 |
void delchar(char s[], char c)
{
int len;
char *p, *q;
for (p = q = s; *p; ++p) {
if (*p != c) {
*(q++) = *p;
}
}
*q = '\0';
}
|
|