圣经也骗人,如之奈何!
#include "apue.h"
#include <dirent.h>
int main(int argc,char *argv[])
{
DIR *dp;
struct direct *dirp;
if(argc!=2)
printf("usage : ls directory_name");
if((dp=opendir(argv[1]))==null)
printf("can't open %s",argv[1]);
while((dirp=readdir(dp))!=NULL)
printf("%s\n",dirp->d_name);
closedir(dp);
}
[root@lideyong c]# gcc -o myls myls.c
myls.c:1:18: apue.h: 没有那个文件或目录
myls.c: In function `main':
................................................................
我的系统是Red Hat 9.0
这是《Unix环境高级编程》第二版的第一个例子,就出错。apue.h在整个系统里搜索了一遍都没有找到这个文件。
不是说Unix系统和Linux系统是通用的吗?我被骗了................555555555
问题点数:10、回复次数:5Top
1 楼yingge(...木脑壳...)回复于 2006-07-03 09:02:08 得分 4
抄书都如此不仔细,连NULL都可以写成null(java过来的?),dirent写成direct。都不知道怎么说你好了
#include <dirent.h>
#include <stdio.h>
int main(int argc,char *argv[])
{
DIR *dp;
struct dirent *dirp;
if(argc!=2)
printf("usage : ls directory_name");
if((dp=opendir(argv[1]))==NULL)
printf("can't open %s",argv[1]);
while((dirp=readdir(dp))!=NULL)
printf("%s\n",dirp->d_name);
closedir(dp);
}
Top
2 楼javaname46(javaname43)回复于 2006-07-03 09:36:23 得分 0
不好意思,那些我都没有看,因为我看到第一个错误找不到apue.h我就觉得没办法往下走了。Top
3 楼javaname46(javaname43)回复于 2006-07-03 09:37:08 得分 0
请问apue.h在Red Hat Linux里是不是没有?Top
4 楼zez(思恩 闭关练功ing...)回复于 2006-07-03 09:41:48 得分 3
学书不要学死了..
不知道 qpue.h 是什么. 你系统里面没有有什么奇怪的? unix 和 linux 并不是完全通用了,而且版本不同,有可能很多东西就不同.. linux 只保证 兼容linux吧.好像没说完全兼容任何版本的unix? 要知道,unix也有很多很多不同的版本,肯定会有不同的.. 否则,还有那么多版本干嘛..
你学习是为了学知识.
看你的程序是对目录操作.那就就搜一下,你的系统里对应目录操作函数的头文件是什么??
找到不就行了..
楼上告诉你了, 就是 dirent.h ,比 qpue 不好理解多了..
你有功夫去搜 qpue.h
怎么就没功夫去搜一下 opendir 在哪个头文件呢??Top
5 楼rexking0(风之彩)回复于 2006-07-03 09:49:04 得分 3
看到这#include "qpue.h"应该就是自己定义的头文件,应该在书上看看,在那里有这个头文件的说明。Top




