IO进程初级知识点

IO
标准IO
文件IO/目录操作/库
文件的概念:
文件:一组相关数据的有序集合。
linux里一切兼文件。
文件名:这一组集合的名称。
文件的分类
按文件的操作方式来分:
标准文件:stdin, stdout, stderr; --> scanf/printf/perror
一般文件:.c, .h, .o, 设备文件
按文件的内容分类 :
源文件
目标文件
数据文件
按数据的组织形式分:
ASCII文件,也叫文本文件
二进制文件
按文件存放的数据的作用不同分:
-,d,l,c,b,p,s
文件操作:
1. 步骤:******
[创建]打开文件
操作文件[读/写/跳转…]
关闭文件
2. 缓冲区
一段特殊的内存,目的是为了减少程序和硬件的交互。提高效率。
行缓冲 :stdin, stdout
全缓冲 : 普通文件
不缓冲 : stderr

	清空缓冲区:
		回车换行
		进程正常结束exit(0);
		int fflush( FILE * stream );
		缓冲区满
3. FILE * 文件流 
	一个FILE的指针指向一个被打开的文件。
   文件描述符
    一个整型值,代表一个被打开的文件。
4. 函数 
	打开文件 
		FILE *fopen (const char *path, const char *mode);
			参数:
				path : 文件名 
				mode : 打开方式:r只读,r+读写 --> 文件必须存在
				                 w只写,w+读写 --> 文件不存在会新建,文件存在会清空
								 a追加,a+读+追加 --> 文件不存在会新建
	操作文件 
		一个字符一个字符
			int fgetc( FILE * stream );
			int fputc( int c, FILE * stream );
		一行一行操作***
			char *fgets(char *s, int size, FILE *stream);
				从stream所指的文件中读size-1字符到s所指的内存中。
				如果在size-1之前遇到\n,会把\n读进去,马上结束,后面不再读取。
			int fputs(const char *s, FILE *stream);
		一块一块操作 --- 二进制文件
			size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
			参数: 
				ptr: 从stream所指文件读数据到ptr所指内存中
				size : 每一块的大小
				nmemb: 一共多少块
				stream :打开的文件流
			返回值:成功时,返回读到的块数;失败时,返回-1。
			size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
			参数: 
				ptr: 把ptr所指内存中数据写入stream所指文件中
				size : 每一块的大小
				nmemb : 一共有多少块
				stream :打开的文件流
			返回值:成功时,返回写入的块数;失败时,返回-1。
		格式化操作
			int scanf( const char * format, ...);
			int fscanf(FILE *stream, const char *format, ...);
            //int sscanf(const char *str, const char *format, ...);
			int printf( const char * format, ... );
			int fprintf(FILE *stream, const char *format, ...);
			//int sprintf(char *str, const char *format, ...);

	测试文件是否结束
		int feof( FILE * stream );
		文件结束时,返回非0值, 文件没有结束,返回0
		
	关闭文件 
		int fclose(FILE *fp);
	跳转光标
		void rewind(FILE *stream); //跳转光标到文件开头
		int fseek(FILE *stream, long offset, int whence);
		参数:	
			stream : 打开的文件流
			offset : 偏移量
			whence : 相对位移,SEEK_SET(文件开头), SEEK_CUR(当前位置), SEEK_END(文件末尾)
		返回值:成功时,0;失败时,返回-1。
		例:向后跳转到距离当前位置10个字节:fseek(fp, 10, SEEK_CUR);
		例:向前跳转到距离当前位置12个字节:fseek(fp, -12, SEEK_CUR);
		例:跳到文件末尾:fseek(fp, 0, SEEK_END);
		例:跳到文件开头:fseek(fp, 0, SEEK_SET);
		
        long ftell(FILE *stream);
		返回值:成功时,光标的偏移量;失败时,返回-1。

猜你喜欢

转载自blog.csdn.net/qq_43967317/article/details/107622528
今日推荐