鱼C论坛

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

删除字符

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

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

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

x
  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5.         extern void cin(char str[20]);
  6.         extern void cdelete(char str[20],char c);
  7.         extern void cout(char str[20]);
  8.         char str[20];
  9.         cin(str);
  10.         char c;
  11.         scanf("%c",&c);
  12.         cdelete(str,c);
  13.         cout(str);
  14.         return 0;
  15.        
  16. }
  17. extern void cin(char str[20])
  18. {
  19.         int i;
  20.         int l=strlen(str);
  21.         for(i=0;i<l;i++)
  22.         {
  23.                 scanf("%d",&str[i]);
  24.         }
  25. }extern void cdelete(char str[20],char c)
  26. {
  27.         int i;
  28.         int t=0;
  29.         int l=strlen(str);
  30.         int j;
  31.         for(i=0;i<l;i++)
  32.         {
  33.                 if(str[i]=c)
  34.                 {       
  35.                         t++;
  36.                         for(j=i;j<l-1;j++)
  37.                         {
  38.                                 str[j]=str[j+1];
  39.                         }
  40.                         str[l-t]='\0';
  41.                 }
  42.         }
  43.        
  44. }extern void cout(char str[20])
  45. {
  46.         printf("%s",str);
  47. }
复制代码


能运行但没结果
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

  20. }
  21. extern void cdelete(char str[20],char c)
  22. {
  23.         int i;
  24.         int j;
  25.         for(i=0,j=0;str[i];i+=1)
  26.         {
  27.                if(str[i]!=c)str[j]=str[i],j+=1;////////////

  28.         }
  29.         str[j]='\0';

  30. }extern void cout(char str[20])
  31. {
  32.         printf("%s",str);
  33. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  3. void cin(char str[20])
  4. {
  5.         scanf("%s" , str)       ;
  6. }

  7. void cdelete(char str[] , char c)
  8. {
  9.         int i , j , n           ;
  10.         for(i = 0 , n = strlen(str) ; i < n ;) {
  11.                 if(str[i] == c) {
  12.                         for(j = i + 1 ; j < n + 1 ; j ++) str[j - 1] = str[j] ;
  13.                         n --                                                  ;
  14.                 } else i ++                                                   ;
  15.         }
  16. }

  17. void cout(char str[])
  18. {
  19.         printf("%s\n" , str)   ;
  20. }

  21. int main()
  22. {
  23.         char c , str[20] ;
  24.         cin(str)         ;
  25.         fflush(stdin)    ;
  26.         scanf("%c", & c) ;
  27.         cdelete(str , c) ;
  28.         cout(str)        ;
  29.         return 0         ;
  30. }
复制代码

        编译运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. ABBBCDEBBCDE
  4. B
  5. ACDECDE

  6. D:\[00.Exerciese.2022]\C>
复制代码

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

  1. void cin(char str[20])
  2. {
  3.         // int i;
  4.         // int l=strlen(str);
  5.         // printf("l = %d\n",strlen(str));
  6.         // for(i=0;i<l;i++)
  7.         // {
  8.         //         scanf("%c",&str[i]);
  9.         // }
  10.         gets(str);
  11. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-23 05:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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