wutengli 发表于 2022-1-12 09:58:13

C语言字符串的删除

如何删除字符串后面的*号,例如****C**prnfisf****
#include<stdio.h>
int main()
{
        char a,*p,*q;
        gets(a);
        p=q=a;
        while(*p)
        {
                if(*p!='*')
                {
                        *q++=*p;
                }
                p++;
        }
        *p='\0';
        puts(a);
}
我写的代码,只能删除前面的和中间的,后面的*无法删除。

Jackson2021 发表于 2022-1-12 10:29:46

本帖最后由 Jackson2021 于 2022-1-12 10:30 编辑

逻辑存在问题,上面程序逻辑只是拿非 '*' 字符从头开始排列而已,非 * 字符数不够替换,因此后面的 * 依然存在

傻眼貓咪 发表于 2022-1-12 10:37:33

#include <stdio.h>

int main(){
        char str, c;
        int i = 0;
        while((c = getchar()) != '\n') if(c != '*') str = c;
        printf("%s", str);
        return 0;
}

wutengli 发表于 2022-1-12 10:46:25

Jackson2021 发表于 2022-1-12 10:29
逻辑存在问题,上面程序逻辑只是拿非 '*' 字符从头开始排列而已,非 * 字符数不够替换,因此后面的 * 依然 ...

多谢,给了我启发,已经改了。
#include<stdio.h>
int main()
{
        char a,*p,*q;
        gets(a);
        p=q=a;
        while(*p)
        {
                if(*p!='*')
                {
                        *q++=*p;
                }
                p++;
                if(*q='*')
                {
                        *q='\0';
                }
        }
        *p='\0';
        puts(a);
}

tomok 发表于 2022-1-12 11:08:12

来学习了
页: [1]
查看完整版本: C语言字符串的删除