【发布时间】:2014-02-27 22:54:33
【问题描述】:
我在 C 语言中有这个作业要做。我是初学者,所以它可能很容易,但无论如何我都有问题。
int main(int argc, char* argv){
int fd=open(argv[1], O_RDONLY);
int fileLength=(int)lseek(fd,0,SEEK_END);
lseek(fd,0,SEEK_SET);
char buf[fileLength];
read(fd,buf,fileLength);
int i=0;
for(i=0; i<fileLength; i++){
printf("%c",buf[i]);
}
printf("\n");
}
我收到此错误:
警告:传递“open”的参数 1 使指针从整数而不进行强制转换如果我写"file" 而不是argv[1],一切都好。
【问题讨论】:
-
你是如何运行程序的?您应该执行类似
./program filename的操作,其中文件名是您要打开的文件。 -
int main(int argc, char **argv){ ...} -
从
int main(int argc, char* argv)更改为int main(int argc, char* argv[]) -
与您的问题无关,但使用
int作为文件长度并转换lseek的返回类型是错误的。正确的类型是off_t。