您的位置:首页 > 运维架构 > Linux

linux学习:c语言文件操作—读文件

2014-04-25 13:52 453 查看
1、linux下文件操作与其他系统文件操作差异较大,先是创建操作:

/*
============================================================================
Name        : Test.c
Author      : wangchuan
Version     :
Copyright   : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/

#include <stdio.h>
#include <stdlib.h>

#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int main(void) {
int f;
const char *f_path="test";
mode_t f_attrib;
struct stat *buf = malloc(sizeof(struct stat));

f_attrib = S_IRUSR | S_IWUSR | S_IWGRP | S_IROTH;

f=open(f_path,O_RDONLY);
if(f == -1){
f=open(f_path,O_RDWR | O_CREAT,f_attrib);
if(f!=-1){
puts("创建一个新文件");
}
else{
puts("无法创建新文件");
return 1;
}
}
else puts("文件打开成功");
close(f);
stat(f_path,buf);

return 0;


2、遍历文件夹

/*
============================================================================
Name        : Test.c
Author      : wangchuan
Version     :
Copyright   : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/

#include <stdio.h>
#include <stdlib.h>

#include <fcntl.h>
#include <dirent.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

void scan_dir(char *dir,int depth)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if((dp = opendir(dir)) == NULL){
puts("无法打开该目录");
return;
}
chdir(dir);
while((entry = readdir(dp)) != NULL){
lstat(entry->d_name,&statbuf);
if(S_IFDIR & statbuf.st_mode){
if(strcmp(".",entry->d_name) == 0 || strcmp("..",entry->d_name) == 0)
continue;
printf("%*s%s/\n",depth,"",entry->d_name);

scan_dir(entry->d_name,depth+4);
}
else
printf("%*s%s\n",depth,"",entry->d_name);
}
chdir("..");

closedir(dp);
}

int main(void) {
printf("Directory scan of /home:\n");
scan_dir("/boot",0);
printf("done.\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: