C语言在字符串str中删除所有字符c

在字符串str中删除所有字符c,返回数组元素个数
救命每次返回字符串的时候怎么都少掉第一位啊
#include <stdio.h>
#include <string.h>
int StrDelChar(char str[], char c){
int p=0,q=0;
while((str+p)!='\0'){
p++;
if(
(str+p)!=c){
(str+(q++))=(str+p);
}
}
return q;
}
int main(){
char s[1000],c;
int n, i = 0;
while ((s[i++] = getchar()) != '\n');
s[i - 1] = 0;
c = getchar();
n = StrDelChar(s, c);
printf("%d %s", n,s);
return 0;
}

img


#include <stdio.h>
#include <string.h>
int StrDelChar(char str[], char c){
int p=0,q=0;
while((str+p)!='\0'){
if((str+p)!=c){
(str+(q++))=(str+p);
}

p++;

}
return q;
}
int main(){
char s[1000],c;
int n, i = 0;
while ((s[i++] = getchar()) != '\n');
s[i - 1] = 0;
c = getchar();
n = StrDelChar(s, c);
printf("%d %s", n,s);
return 0;
}

p++; 放if下边

你题目的解答代码如下:

#include <stdio.h>
#include <string.h>
int StrDelChar(char str[], char c)
{
    int p = 0, q = 0;
    while (*(str + p) != '\0')
    {
        if (*(str + p) != c)
        {
            *(str + (q++)) = *(str + p);
        }
        p++; //放if下边
    }
    *(str + q) = 0; //字符串结束僧设置0 
    return q;
}
int main()
{
    char s[1000], c;
    int n, i = 0;
    while ((s[i++] = getchar()) != '\n')
        ;
    s[i - 1] = 0;
    c = getchar();
    n = StrDelChar(s, c);
    printf("%d %s", n, s);
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632