zyxmm 发表于 2022-11-2 16:32:03

删除字符

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

能运行但没结果

jhq999 发表于 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);
      extern void cdelete(char str,char c);
      extern void cout(char str);
      char str;
      cin(str);
      fflush(stdin);///////////
      char c;
      scanf("%c",&c);
      cdelete(str,c);
      cout(str);
      return 0;

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

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

      }
      str='\0';

}extern void cout(char str)
{
      printf("%s",str);
}

jackz007 发表于 2022-11-2 17:18:03

本帖最后由 jackz007 于 2022-11-2 18:25 编辑

#include<stdio.h>
#include<string.h>

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

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

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

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

D:\\C>x
ABBBCDEBBCDE
B
ACDECDE

D:\\C>
      一般不要使用 extern,这个关键字的意思是通知编译器,本标识符(变量、函数、类型等)是有定义的,只要做到先定义,后使用,没必要使用这个关键字。
      C 语言的函数必须先定义,然后,才能调用,就是说,函数定义的位置应该位于调用位置之前,只要做到了,任何函数、变量在使用前都不需要声明。就本例而言,只要把 main() 的位置安排在所有函数之后,调用前,就不需要任何的声明。

桃花飞舞 发表于 2022-11-2 23:43:10

本帖最后由 桃花飞舞 于 2022-11-2 23:45 编辑

整体没什么问题,
1.extern看起来别扭
2.第33行的if(str=c)改为if(str==c)
3.extern void cin(char str)是最让我不理解的,为什么要写extern void cin(char str)这个函数,为什么不用字符串的输入函数, gets(str);或者scanf("%s",str)来输入。

void cin(char str)
{
        // int i;
        // int l=strlen(str);
        // printf("l = %d\n",strlen(str));
        // for(i=0;i<l;i++)
        // {
        //         scanf("%c",&str);
        // }
        gets(str);
}
页: [1]
查看完整版本: 删除字符