搜索
楼主: 忆中寻思
打印 上一主题 下一主题

请问为什么编译不了?

[复制链接]
16#
 楼主| 发表于 2014-4-20 23:28:49 | 只看该作者

这个程序是用要求册除字符'H"

本帖最后由 rosynirvana 于 2014-4-20 23:32 编辑
rosynirvana 发表于 2014-4-20 23:08
你这段代码里又没有remove这个函数
如果其他地方有,那要改个名字,不能用remove这个名字

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAXELS 14
  4. int main()
  5. {
  6.         void remove(char [],char);
  7.         char message[]="HappyHolidays\n";
  8.         char delh='H';
  9.         printf("%s",message);
  10.         remove(message,delh);
  11.         int i;
  12.         for(i=0;i<MAXELS;i++)
  13.         {
  14.                 printf("%c",message[i]);
  15.         }
  16.         system("pause");
  17.         return 0;
  18. }
  19. void remove(char *message,char delh)
  20. {
  21.         char *a=message;
  22.         while(*message++)
  23.         {
  24.                 if(*message++==delh)
  25.                 ;
  26.                 else
  27.                 *a++=*message++;
  28.                
  29.                  
  30.                
  31.         }
  32. }
复制代码



17#
发表于 2014-4-20 23:37:27 | 只看该作者
本帖最后由 rosynirvana 于 2014-4-20 23:39 编辑

如果只是要通过编译,那么把函数改个名就行
remove_char之类的
其他问题还有很多

18#
发表于 2014-4-20 23:44:44 | 只看该作者
本帖最后由 rosynirvana 于 2014-4-20 23:51 编辑

首先,函数声明写在某个函数之类是蹩脚的写法
所有函数声明都应该写在全局作用域中

MAXELS宏没必要,整个代码就这一个长度,而且这个MAXELS宏和message数组长度还不一样(message长度是15)

如果严格遵照C90标准,那么函数内的声明必须写在statement之前,不能在后面写int i;
用printf逐个输出字符数组的每个字符是很低效的做法,输出字符串应该直接用puts

另外remove_char的实现不正确
19#
 楼主| 发表于 2014-4-21 17:16:24 | 只看该作者
rosynirvana 发表于 2014-4-20 23:44
首先,函数声明写在某个函数之类是蹩脚的写法
所有函数声明都应该写在全局作用域中

message长度为什么不是14?
20#
发表于 2014-4-21 17:28:34 | 只看该作者
忆中寻思 发表于 2014-4-21 17:16
message长度为什么不是14?

你忘了最后的休止字符'\0'了吧
21#
 楼主| 发表于 2014-4-21 17:37:44 | 只看该作者
rosynirvana 发表于 2014-4-21 17:28
你忘了最后的休止字符'\0'了吧

好像是啊!好了,谢谢你!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表