搜索
查看: 1541|回复: 20
打印 上一主题 下一主题

请问为什么编译不了?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-4-20 16:52:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
#include <stdlib.h>
#define MAXELS 14
int main()
{
        void remove(char [],char);
    char message[MAXELS]="HappyHolidays";
    char aph='H';
    int i;
    printf("%s",message);
    system("pause");
    return 0;
}

最佳答案

查看完整内容

写个供你参考的版本
沙发
发表于 2014-4-20 16:52:03 | 只看该作者
写个供你参考的版本
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void remove_char(char*, char);
  4. int main()
  5. {
  6.         
  7.         char message[]="HappyHolidays\n";
  8.         char delh='H';
  9.         int i;
  10.         
  11.         puts(message);
  12.         remove_char(message,delh);
  13.         puts(message);
  14.         system("pause");
  15.         return 0;
  16. }

  17. void remove_char(char *message,char delh)
  18. {
  19.         char temp[15];
  20.         int i, j;
  21.         for(i=0, j=0; message[i]; ++i)
  22.                         if(message[i] != delh)
  23.                                 temp[j++] = message[i];
  24.         temp[j] = '\0';
  25.         for(i=0; temp[i]; ++i)
  26.                         message[i] = temp[i];
  27.         message[i] = '\0';      
  28. }
复制代码
板凳
发表于 2014-4-20 17:18:06 | 只看该作者
你这段代码这几句好像是多余的吧?
  1. void remove(char [],char);
复制代码
  1. char aph='H';
复制代码
  1. int i;
复制代码

地板
发表于 2014-4-20 17:59:09 | 只看该作者
好好看编译器给出的提示

你写了个声明void remove(char*, char);
但是stdio.h里面有个同名的函数remove,原型是int remove(const char*);
这两个声明冲突了

把那句函数声明注释掉或者删掉就可以编译了
5#
发表于 2014-4-20 18:12:18 | 只看该作者
可以請問一下這句#define MAXELS 14  是何作用?{:soso_e132:}
6#
发表于 2014-4-20 18:21:51 | 只看该作者
愛情風華 发表于 2014-4-20 18:12
可以請問一下這句#define MAXELS 14  是何作用?

这句等于
  1. char message[14]="HappyHolidays";
复制代码

的意思,
7#
发表于 2014-4-20 19:11:59 | 只看该作者
你这第一行什么意思,不懂
8#
发表于 2014-4-20 21:44:50 | 只看该作者
愛情風華 发表于 2014-4-20 18:12
可以請問一下這句#define MAXELS 14  是何作用?

就是在编译“之前”,把代码里所有的MAXELS用14替换
9#
 楼主| 发表于 2014-4-20 22:15:36 | 只看该作者
李掌柜 发表于 2014-4-20 17:18
你这段代码这几句好像是多余的吧?

嗯,是多余的!
10#
 楼主| 发表于 2014-4-20 22:38:19 | 只看该作者
rosynirvana 发表于 2014-4-20 17:59
好好看编译器给出的提示

你写了个声明void remove(char*, char);

请问如何注释掉?删除不用有影响吗?
11#
发表于 2014-4-20 22:46:22 | 只看该作者
忆中寻思 发表于 2014-4-20 22:38
请问如何注释掉?删除不用有影响吗?
  1. // void remove(char*, char);
复制代码

或者
  1. /* void remove(char*, char);  */
复制代码


编译器就会认为它是注释,是给程序员看的,就会直接跳过不处理了
不过这里是和标准库里的函数冲突,直接删掉就可以了

删掉不用是指什么?
12#
 楼主| 发表于 2014-4-20 22:55:04 | 只看该作者
不好意思,打错一个字,是删除不会对输出/输入有影响吗?
13#
发表于 2014-4-20 22:59:10 | 只看该作者
忆中寻思 发表于 2014-4-20 22:55
不好意思,打错一个字,是删除不会对输出/输入有影响吗?

我说的是删除你写的 void remove(char[], char);
为啥会对输入输出有影响?
14#
 楼主| 发表于 2014-4-20 23:03:36 | 只看该作者
我这个是一个函数原型来的。怎么可以删去呢?
15#
发表于 2014-4-20 23:08:16 | 只看该作者
忆中寻思 发表于 2014-4-20 23:03
我这个是一个函数原型来的。怎么可以删去呢?

你这段代码里又没有remove这个函数
如果其他地方有,那要改个名字,不能用remove这个名字

或者你把完整代码贴上来?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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