L4文件IO-标准IO(day1、2)

这篇博客介绍了C语言中的标准I/O,包括文件的概念、类型,标准I/O的流、缓冲类型,以及stdin, stdout, stderr的使用。详细讲解了行缓冲和全缓冲的区别,并探讨了文件的打开和关闭,以及错误处理。还涵盖了标准I/O的读写操作,如字符和对象的输入输出。" 104688502,9365056,程序设计思维:广度搜索在迷宫与倒水问题中的应用,"['算法', '程序设计', '搜索算法', '数据结构', '问题解决']
摘要由CSDN通过智能技术生成

目录

一、标准I/O介绍(输入输出)

一、文件的概念和类型

Unix基础知识-系统调用和库函数

二、标准I/O-流

三、标准I/O-流的缓冲类型

四、标准I/O –stdin,stdout,stderr(三个流)

 1、行缓冲

 2、全缓冲

 五、标准I/O -文件的打开和关闭

1、文件的打开:

 2、错误信息处理

3、文件的关闭

day1作业:

二、标准IO的读写

一、字符的输入输出

1、读写流

2、 按字符输入(读单个字符)

3、按字符输出  (写单个字符)

4、按行输入

 5、按行输出

 二、对象(二进制)的读写

 day2作业:


一、标准I/O介绍(输入输出)

标准I/O由ANSI C标准定义

主流操作系统上都实现了C库

  标准I/O通过缓冲机制减少系统调用,实现更高的效率
 

一、文件的概念和类型

  概念:
      一组相关数据的有序集合   
文件类型:
  常规文件    r  (磁盘上的数据)
  目录文件    d    (文件夹)
  字符设备文件    c  (键盘、鼠标)
  块设备文件    b   (U盘、磁盘)
  管道文件    p
  套接字文件    s
  符号链接文件    l    (快捷方式、)

Unix基础知识-系统调用和库函数

 不同操作系统的接口是不一样的,c库函数可以连接不同系统的接口

二、标准I/O-流

 FILE
  标准IO用一个结构体类型来存放打开的文件的相关信息
  标准I/O的所有操作都是围绕FILE来进行

流(stream)
   FILE又被称为流(stream)
 文本流/二进制流

 Windows:

  二进制流:   换行符   ⬅➡   ‘\n’ 

      文本流:   换行符  ⬅➡  ‘\r’ ‘\n’
  Linux:

            换行符   ⬅➡   ‘\n’   (换行是个符号)

三、标准I/O-流的缓冲类型

(100个文件,写一次交一次,和全部写完再一次交100份)前者就是无缓冲,后者就是缓冲

全缓冲
当流的缓冲区无数据或无空间时才执行实际I/O操作
行缓冲
当在输入和输出中遇到换行符(‘\n’)时,进行I/O操作
 当流和一个终端关联时,典型的行缓冲
无缓冲
数据直接写入文件,流不进行缓冲

程序结束必输出

四、标准I/O –stdin,stdout,stderr(三个流)

标准I/O预定义3个流,程序运行时自动打开

标准输入流

0

STDIN_FILENO

stdin

标准输出流

1

STDOUT_FILENO

stdout

标准错误流

2

STDERR_FILENO

stderr

  stdin /  stdout /  stderr
     
  stdin/stdout 默认是行缓冲
    
   stderr没有缓冲

调用man查看手册的时候一般不是man 2 +函数,就是 man 3 +函数

 1、行缓冲

第一种:

#include <stdio.h>
#include <unistd.h>


int main(int argc, char*argv[]){

	printf("hello world");

}


第二种:

#include <stdio.h>
#include <unistd.h>#sleep的头文件


int main(int argc, char*argv[]){

	printf("hello world");

	while(1){
		sleep(1);#s间隔一秒执行一次
	}
}

第三种:

#include <stdio.h>
#include <unistd.h>


int main(int argc, char*argv[]){

	printf("hello world\n");

	while(1){
		sleep(1);
	}
}

结果:

第一种:程序结束所以打印了

 第二种:打印了但是程序没结束在缓冲,所以不输出

 第三种:行缓冲

 2、全缓冲

第一种:

#include <stdio.h>
#include <unistd.h>


int main(int argc, char*argv[]){
    int i = 0;
	for (i = 0;i<1024;i++){
	printf("a");
	}
	while(1){
		sleep(1);
	}
}

第二种:

#include <stdio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值