(原标题为:求解:一个菜鸟编程中的问题!)
编写了一个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
谢谢各位大侠的建议
做为菜鸟的我会努力的!
努力也成为大侠
|