LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 751|回复: 5

有关打开目录函数的问题,大家帮我看看源程序.

[复制链接]
发表于 2005-9-26 10:53:47 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
                                                                                                                                               
int main(int argc,char **argv)
{
  char path[10];
  DIR *dirp;
  memset(path,0,10);
  strcpy(path,"/home");
  if((dirp=opendir(path))==NULL);
  {
    printf("3456");
    perror("opendir");
    exit(1);
  }
                                                                                                                                               
printf("1234");
closedir(dirp);
                                                                                                                                               
return 0;
                                                                                                                                              }

结果是
opendir: Success
3456

为什么opendir执行不成功呢?我怎样才能让他正常打开这个目录?
麻烦大家帮帮我,谢谢!
发表于 2005-9-26 11:47:01 | 显示全部楼层
if((dirp=opendir(path))==NULL);<-问题出在这里,多了个分号!
{
printf("3456");
perror("opendir");
exit(1);
}
回复 支持 反对

使用道具 举报

发表于 2005-9-26 12:02:35 | 显示全部楼层
没有用语法加亮吗 ?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-26 20:28:03 | 显示全部楼层
嘿嘿,不好意思!谢谢大家.
请问语法加亮怎么弄?
回复 支持 反对

使用道具 举报

发表于 2005-9-27 14:29:52 | 显示全部楼层
任何一个默认安装的vim都有语法加亮
另外:
perror应该紧跟在可能出现错误的系统调用之后
你这里实际上判断printf里调用的write是否成功,当然是success的
回复 支持 反对

使用道具 举报

发表于 2005-9-27 19:28:57 | 显示全部楼层
他的打印语句,本身用来调试程序看结果用的。本质问题是在判断后不能加上分号。如果加上分号则编译器认为执行一个空语句,什么也不做。后面的{有没有视同顺序执行。这与语法加亮与不加亮没有关系的。不信可以用vim或anjuta输入后看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表