Chinaunix首页 | 论坛 | 博客
  • 博客访问: 713308
  • 博文数量: 94
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 1555
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-08 21:28
文章分类

全部博文(94)

文章存档

2012年(23)

2011年(39)

2010年(14)

2009年(18)

分类: C/C++

2009-11-11 00:07:15

我们编写程序的时候,有时候会要得到我们当前的工作路径。C 库函数提供了 getcwd 来解决这个问题。
#include ;
char *getcwd(char *buffer,size_t size);
    我们提供一个 size 大小的 buffer,getcwd 会把我们当前的路径考到 buffer 中.如果 buffer太小,函数会返回-1 和一个错误号.
    Linux提供了大量的目录操作函数,我们学习几个比较简单和常用的函数。
#include
#include
#include
#include
#include
int mkdir(const char *path, mode_t mode); /*创建一个目录*/
DIR *opendir(const char * path);/*打开一个目录为以后读做准备*/
struct dirent *readdir(DIR *dir);/*读一个打开的目录*/
void rewinddir(DIR *dir);/*重读目录 跟rewind函数一样*/
off_t telldir(DIR *dir, off_t off);
void seekdir(DIR *dir, off_t off);/*类似于fteel和fseek函数*/
int closedir(DIR *dir);/*关闭目录*/
#include
#include
#include
#include
#include
#include
#include
static int get_file_size_time(const char *filename)
{
    struct stat statbuf;
    if(stat(filename, &statbuf) == -1)
    {
        printf("Get stat on %s Error: %s\n", filename, strerror(errno));
        return(-1);
    }
    if(S_ISDIR(statbuf st_mode))
        return(1)
    if(S_ISREG(statbuf st_mode))
    {
        printf("%s size: %ld bytes\t modified at %s", filename, statbuf.st_size, ctime(&statbuf.st_mtime));
    }
    return(0);
}
int main(int argc, char **argv)
{
    DIR *dirp;
    strunct dirent *direntp;
    int stats;
    if(argc!=2)
    {
        printf("Usage: %s filename\n\a", argv[0]);
        exit(1);
    }
 if(((stats=get_file_size_time(argv[1]))==0) || stats==-1)
        exit(1);
    if((dirp=opendir(argv[1]))==NULL)
    {
        printf("Open Directory %s Error: %s\n", argv[1],strerror(errno));
        exit(1);
    }
    while((direntp=readdir(dirp))!=NULL)
    {
        if(get_file_size_time(direntp->d_name)==-1)
            break;
        closedir(dirp);
        exit(1);
    }
    return 0;
}
阅读(1229) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~