免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6231 | 回复: 10
打印 上一主题 下一主题

求解:expected ‘)’ before ‘perror’ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-26 23:55 |只看该作者 |倒序浏览
(原标题为:求解:一个菜鸟编程中的问题!)

编写了一个shell命令cp
代码如下:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#define maxOnce 1024
int main(int argc,char * argv[])
{
        int fdsrc,fddist;
        char buf[maxOnce];
        char buf1[maxOnce];
        int size;
        if(argc!=3)
                printf("error for input\n");
        if((fdsrc=open(argv[1],O_RDONLY)==-1)
        perror("error for open\n ");//出错
        if((fddist=creat(argv[2],S_IREAD | S_WRITE)==-1)
                perror("error for creat");
        while((size=read(fdsrc,buf,maxOnce))>0)
        {
                if(write(fddist,buf1,maxOnce)!=size)
                        perror("error for write\n");
        }
        if(close(fdsrc)==-1||close(fddist)==-1)
                perror("error for close\n");
        return 0;
}

编译连接
[melon@localhost linuxApp]$ gcc -lm cp.c -o cp
cp.c: 在函数 ‘main’ 中:
cp.c:15: 错误:expected ‘)’ before ‘perror’
cp.c:26: 错误:expected declaration or statement at end of input
怎么想也不知道错在那里,大侠能指点下吗?
我看了半天也不知道这个是错在那里!
编写了其他的shell命令也出现了这个错误,希望大侠们指点下!
迷惑ing

[ 本帖最后由 langue 于 2006-12-27 20:35 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-12-27 00:03 |只看该作者
错误是在上一行

  1. if((fdsrc=open(argv[1],O_RDONLY)==-1)     <--- 少个括号)
  2.         perror("error for open\n ");//出错
复制代码

论坛徽章:
0
3 [报告]
发表于 2006-12-27 00:21 |只看该作者

回复 2楼 TAW 的帖子

晕死,我怎么看了半天就没看出个错误来呢!
谢谢你啊
呵呵

论坛徽章:
0
4 [报告]
发表于 2006-12-27 05:57 |只看该作者
cp.c:15: 错误:expected ‘)’ before ‘perror’

其实错误信息都给出来了呀。

论坛徽章:
0
5 [报告]
发表于 2006-12-27 08:54 |只看该作者
原帖由 langue 于 2006-12-27 05:57 发表
cp.c:15: 错误:expected ‘)’ before ‘perror’

其实错误信息都给出来了呀。


没错

论坛徽章:
0
6 [报告]
发表于 2006-12-27 10:13 |只看该作者
晕,这样的问题也到cu上来问,把cu当成什么地方了

论坛徽章:
0
7 [报告]
发表于 2006-12-27 20:18 |只看该作者

回复 6楼 lanying_wzw 的帖子

呵呵,不好意思,我是看了出错信息了,但,怎么瞅代码也没觉得错,所以上来问问,呵呵!

论坛徽章:
0
8 [报告]
发表于 2006-12-27 20:34 |只看该作者
原帖由 melonmelon 于 2006-12-27 20:18 发表
呵呵,不好意思,我是看了出错信息了,但,怎么瞅代码也没觉得错,所以上来问问,呵呵!


那我就解释一下吧。顺便保留这个帖。我对楼主的标题进行了轻微的改动,便于大家查找答案

expected ‘)’ before ‘perror’

既然编译器 “期待” 一个右括号,就表明,如果你不加这个括号,编译器就无法正确编译,所以你就给他加上,就行了。

编译器不像人类,他们没有情感,零是零,一是一,不要和他们较劲。

话又说回来了,编写代码的时候首先要熟悉编程语言。让编译器检查应该是最后一关。
如果自己对编程语言不熟悉,还是先学好这门语言吧。C 语言的经典书目:The C Programming Language

论坛徽章:
0
9 [报告]
发表于 2006-12-28 07:54 |只看该作者
你需要一个能显示括号匹配的编辑器。

论坛徽章:
0
10 [报告]
发表于 2006-12-28 10:24 |只看该作者
建议:
先 if()
然后再往if里面填内容

良好的编程习惯很重要。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP