鱼C论坛

 找回密码
 立即注册
查看: 2759|回复: 3

删除字符

[复制链接]
发表于 2022-11-2 16:32:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<string.h>
int main()
{
        extern void cin(char str[20]);
        extern void cdelete(char str[20],char c);
        extern void cout(char str[20]);
        char str[20];
        cin(str);
        char c;
        scanf("%c",&c);
        cdelete(str,c);
        cout(str);
        return 0;
        
}
extern void cin(char str[20])
{
        int i;
        int l=strlen(str);
        for(i=0;i<l;i++)
        {
                scanf("%d",&str[i]);
        }
}extern void cdelete(char str[20],char c)
{
        int i; 
        int t=0;
        int l=strlen(str);
        int j;
        for(i=0;i<l;i++)
        {
                if(str[i]=c)
                {        
                        t++;
                        for(j=i;j<l-1;j++)
                        {
                                str[j]=str[j+1];
                        }
                        str[l-t]='\0';
                }
        }
        
}extern void cout(char str[20])
{
        printf("%s",str);
}

能运行但没结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-2 17:16:54 | 显示全部楼层
本帖最后由 jhq999 于 2022-11-2 17:18 编辑
#include<stdio.h>
#include<string.h>
int main()
{
        extern void cin(char str[20]);
        extern void cdelete(char str[20],char c);
        extern void cout(char str[20]);
        char str[20];
        cin(str);
        fflush(stdin);///////////
        char c;
        scanf("%c",&c);
        cdelete(str,c);
        cout(str);
        return 0;

}
extern void cin(char str[20])
{
       scanf("%s",str) ;///////////如果需要空格scanf(“%[^\n]",str);

}
extern void cdelete(char str[20],char c)
{
        int i;
        int j;
        for(i=0,j=0;str[i];i+=1)
        {
               if(str[i]!=c)str[j]=str[i],j+=1;////////////

        }
        str[j]='\0';

}extern void cout(char str[20])
{
        printf("%s",str);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-2 17:18:03 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-2 18:25 编辑
#include<stdio.h>
#include<string.h>

void cin(char str[20])
{
        scanf("%s" , str)       ;
}

void cdelete(char str[] , char c)
{
        int i , j , n           ; 
        for(i = 0 , n = strlen(str) ; i < n ;) {
                if(str[i] == c) {
                        for(j = i + 1 ; j < n + 1 ; j ++) str[j - 1] = str[j] ;
                        n --                                                  ;
                } else i ++                                                   ;
        }
}

void cout(char str[])
{
        printf("%s\n" , str)   ;
}

int main()
{
        char c , str[20] ;
        cin(str)         ;
        fflush(stdin)    ;
        scanf("%c", & c) ;
        cdelete(str , c) ;
        cout(str)        ;
        return 0         ;
}
        编译运行实况:
D:\[00.Exerciese.2022]\C>g++ -o x x.c

D:\[00.Exerciese.2022]\C>x
ABBBCDEBBCDE
B
ACDECDE

D:\[00.Exerciese.2022]\C>
        一般不要使用 extern,这个关键字的意思是通知编译器,本标识符(变量、函数、类型等)是有定义的,只要做到先定义,后使用,没必要使用这个关键字。
        C 语言的函数必须先定义,然后,才能调用,就是说,函数定义的位置应该位于调用位置之前,只要做到了,任何函数、变量在使用前都不需要声明。就本例而言,只要把 main() 的位置安排在所有函数之后,调用前,就不需要任何的声明。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-2 23:43:10 | 显示全部楼层
本帖最后由 桃花飞舞 于 2022-11-2 23:45 编辑

整体没什么问题,
1.extern看起来别扭
2.第33行的if(str[i]=c)改为if(str[i]==c)
[i]3.extern void cin(char str[20])是最让我不理解的,为什么要写extern void cin(char str[20])这个函数,为什么不用字符串的输入函数, gets(str);  或者scanf("%s",str)来输入[/i]。
void cin(char str[20])
{
        // int i;
        // int l=strlen(str);
        // printf("l = %d\n",strlen(str));
        // for(i=0;i<l;i++)
        // {
        //         scanf("%c",&str[i]);
        // }
        gets(str);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 14:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表