目录IO(详细)

一、目录IO。
1.为什么要学习目录IO接口?
目录可以存放一些文件/目录,如果学习目录IO操作,那么我们就可以通过目录的名字来将目录下的全部名字读取出来,方便后续的操作。
例如:usr_data/
bling.txt aaa.txt bbb.txt  --> 通过目录IO操作函数,就可以求出这些文件的名字。

2.访问文件与访问目录有什么区别?
访问文件  --> 得到文件里面的内容。
访问目录  --> 得到目录项的名字、属性、类型..

二、目录IO函数接口?
1.如何打开目录?  -->  opendir()  --> man 3 opendir   (directory目录)
#include <sys/types.h>
#include <dirent.h>   //目录的专属头文件
DIR *opendir(const char *name);
参数:
    name: 需要打开的那个目录的路径
返回值:
    成功:目录流指针(目录项指针)
    失败:NULL

问题:打开一个目录是不是意味着已经切换进去了?
答案:没有切换进去。

2.如何切换到目录中?  --> chdir()   --> man 3 chdir
问题:一定要切换到目录下,才能读取目录的东西吗?
答案:不一定,但是切换进去之后,该目录下所有的文件都是当前目录下的文件,访问这些文件就很方便。
#include <unistd.h>
 int chdir(const char *path);
参数:
  path:  需要切换的那个目录的路径。

返回值:
    成功:0
    失败:-1
练习1:
将目录usr_data目录里面文件bling.txt里面的信息打印出来 (尽量用标准IO来操作)

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>

int main(int argc,char **argv)
{
	//打开目录
	DIR *dp = opendir("./usr_data");
	if(dp == NULL)
	{
		perror("opendir fail");
		return -1;
	}
	
	//切换到目录里面去
	chdir("./usr_data");
	
	//读文件(普通文件尽量用标准IO打开)
	FILE *fp;
	fp = fopen("bling.txt","r+");
	if(fp == NULL)  //比较运算符'=='不能写成'='
	{
		perror("fopen file fail");
		return -1;
	}
	
	//读信息
 	char buf[1024] = {0};
	fread(buf,1,sizeof(buf),fp);
	printf("buf:%s\n",buf); 
	
	char str1[20] = {0};
	char str2[20] = {0};
	char str3[20] = {0};
	char str4[20] = {0};
	
	//sscanf
	sscanf(buf,"%[^','],%[^','],%[^','],%s",str1,str2,str3,str4);
	printf("str1:%s str2:%s str3:%s str4:%s
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值