首页 > 学技术 > 技术网文 > C/C++ > 正文

[保留] 求解:expected ‘)’ before ‘perror’


来源 chinaunix.net kuqin整理

(原标题为:求解:一个菜鸟编程中的问题!)

编写了一个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 编辑 ]



 TAW 回复于:2006-12-27 00:03:45

错误是在上一行

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



 melonmelon 回复于:2006-12-27 00:21:32

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


 langue 回复于:2006-12-27 05:57:33

cp.c:15: 错误:expected ‘)’ before ‘perror’

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


 TAW 回复于:2006-12-27 08:54:54

引用:原帖由 langue 于 2006-12-27 05:57 发表
cp.c:15: 错误:expected ‘)’ before ‘perror’

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



没错
:lol:


 lanying_wzw 回复于:2006-12-27 10:13:06

晕,这样的问题也到cu上来问,把cu当成什么地方了


 melonmelon 回复于:2006-12-27 20:18:41

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


 langue 回复于:2006-12-27 20:34:25

引用:原帖由 melonmelon 于 2006-12-27 20:18 发表
呵呵,不好意思,我是看了出错信息了,但,怎么瞅代码也没觉得错,所以上来问问,呵呵! 



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

expected ‘)’ before ‘perror’

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

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

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


 emacsnw 回复于:2006-12-28 07:54:14

你需要一个能显示括号匹配的编辑器。


 boxpei 回复于:2006-12-28 10:24:04

建议:
先 if()
然后再往if里面填内容

良好的编程习惯很重要。


 melonmelon 回复于:2006-12-28 20:35:32

谢谢各位大侠的建议
做为菜鸟的我会努力的!
努力也成为大侠




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=876688
转载请注明作者名及原文出处



收藏本页到: