标准IO.

标准IO与文件IO linux下文件操作包含下面4个头文件: 阅读详情

IO  input  output
I: 键盘是标准输入设备 ====》默认输入就是指键盘  /dev/input
O: 显示器是标准输出设备 ==》默认输出就是指显示器
 

linux中一切都是文件。文件用来存储数据(数据,指令)。

IO输入输出,操作对象是文件

用 命令  ll 来查看

文件权限用一种特殊的符号表示法来描述,通常可以看到类似rwxrwxrwx这样的权限字符串,以及它们对应的数字表示法111111111。

这些符号和数字分别对应着文件或目录的读、写、执行权限,以及对这些权限的拥有者(用户)、所属组和其他用户的不同权限设定。

一、文件权限符号

•r:表示“读”权限,即有权限读取文件的内容或列出目录的内容。

•w:表示“写”权限,即有权限修改文件的内容或在目录中创建和删除文件。

•x:表示“执行”权限,对于文件意味着可以被执行,对于目录意味着可以进入该目录。

每种权限(读、写、执行)都可以用一个二进制位表示,而每个用户类别(用户、组、其他)的权限可以用三个二进制位表示,这样就有了一个八进制数。

具体如下:

•r对应1(二进制)

•w对应2(二进制)

•x对应4(二进制)

所以,rwx的权限用二进制表示就是1+2+4=7(十进制),rw-(无执行权限)就是1+2=3(十进制),以此类推。 

示例:

•rwx对应111(二进制),即7(十进制)。

•r-x对应101(二进制),即5(十进制)。

所以,完整的权限字符串rwxrwxrwx可以表示为数字777,而rwxr-xr-x可以表示为数字755。

777表示完全开放的权限,即所有人都有读、写、执行权限,这在生产环境中通常被认为是不安全的,除非有特别的需求。

初始时,文件默认权限:

rw_  rw_   rw_    662

原始权限为 mode,则最终建立文件的权限为:mode & ~umask。

umask带表被拿掉的权限,另外文件默认没有执行权限.

设 umask 为 002,则新建立的文件默认权限是什么()

rw-rw-r--

修改文件权限的命令  chmod +r/w/x 文件名

chmod 777  filename


二、Linux文件类型: b,c,d,-,l,s,p


        b   block       块设备文件
                        按块扫描设备信息的文件
                        存储设备

        c   character   字符设备文件
                        按字符扫描设备信息的文件 

        d   directory   目录文件 
                        存放文件

        -               普通文件 
                        存放数据
                        图片、音视频、压缩包、文本文件

        l   link        链接文件 
                        快捷方式

        s   socket      套接字文件
                        用来套接字通信

        p   pipe        管道文件
                        用来进程间通信


普通文件:
        1.ASCII码文件
            文件中所有的字符均为能够在终端上显示的字符
            文本文件、程序.c 
        2.二进制文件
            文件中存放数据的二进制形式
            图片、音视频、压缩包 

        ASCII码文件是特殊的二进制文件

标准IO、文件IO
        标准IO是库函数
        文件IO是系统调用

        系统调用:功能强大,应对复杂场景不够灵活
        库函数:针对系统调用的封装,使用方便灵活

        标准IO可以在Windows或者Linux平台使用
        文件IO只能在Linux系统平台使用
 

三、标准IO:

ANSI C 设计的一组用文件IO 封装的操作库函数
头文件: stdio.h  ==》标准输入输出头文件
         /usr/include/stdio.h

<>   是系统库函数,默认路径在/usr/include/
eg : ====》stdio.h  ===>stdio.c==>libc.so ==>/usr/lib     (so 动态库)
""   是用户自定义函数,默认是当前路径
eg : ===>xxx.h  ===>xxx.c


        getchar putchar scanf printf gets puts  -> 标准IO

        #include <stdio.h>      

        fopen/fclose 
        fgetc/fputc 
        fgets/fputs
        fscanf/fprintf
        fread/fwrite 
        fseek/rewind/ftell 

从文件中读写数据的流程:
        打开文件 -> 读写文件 -> 关闭文件

      fopen                   fclose
                    fgetc/fputc     单个字符的读写
                    fgets/fputs     字符串的读写
                    fscanf/fprintf  格式化字符串的读写
                    fread/fwrite    二进制文件的读写

  四、函数接口:


        1.fopen


          FILE *fopen(const char *pathname, const char *mode);
          功能:
            打开pathname对应的文件并与其建立一个文件流
          参数:
            pathname:要打开文件路径的字符串
            mode:
                r       只读            文件不存在报错,文件存在只读打开
                r+      读写            文件不存在报错,文件存在读写打开
                w       只写            文件不存在创建,文件存在将文件内容清空,只写打开
                w+      写读            文件不存在创建,文件存在将文件内容清空,写读打开
                a       追加只写        文件不存在创建,文件存在追加只写打开
                a+      追加写读        文件不存在创建,文件存在追加写读打开
          返回值:
              成功返回打开的文件流指针
              失败返回NULL

2.fclose 


          int fclose(FILE *stream);
          功能:
            关闭文件,释放文件流指针
          参数:
            stream:文件流指针
          返回值:
            成功返回0 
            失败返回EOF(-1)

#include <stdio.h>

int main(void)
{
	FILE *fp = NULL;

	fp = fopen("a.txt", "r");
	if (NULL == fp)
	{
		perror("fail fopen");
		return -1;
	}

	printf("fopen success!\n");

	fclose(fp);

	return 0;
}

 3. fputc


        int fputc(int c, FILE *stream);
功能:
        向流中写入一个字符
参数:
        c:要写入的字符
        stream:文件流指针
返回值:
        成功返回写入的字符ASCII码值
        失败返回EOF

4.fgetc


        int fgetc(FILE *stream);
功能:
        从流中读取一个字符
参数:
        stream:文件流指针
返回值:
        成功返回读到字符的ASCII码值
        读到文件末尾返回EOF

用fgetc和fputc实现文件的拷贝

#include <stdio.h>

int main(void)
{
	FILE *src = fopen("1.txt","r");
	FILE *dst = fopen("2.txt","w");
	if(	NULL == src || NULL == dst)
	{
		printf("fopen is error\n");
		return 1;
	}

	char c = 0;
	while(1)
	{
		c = fgetc(src);
		if(EOF == c)
		{
			break;
		}
		fputc(c,dst);
	}

	fclose(src);
	fclose(dst);

	return 0;
}

 5.文件流:


        1.具有方向性(读写)
        2.具有连续性
        3.具有顺序性

        句柄:操作对象的一个抽象

特殊的三个文件流:
        stdin   标准输入流          从终端读取数据
        stdout  标准输出流          向终端打印数据
        stderr  标准出错流          向终端打印数据 

        getchar、scanf、gets 通过stdin来读取终端数据
        putchar、printf、puts通过stdout来向终端输出数据
        perror通过stderr来向终端输出数据

#include <stdio.h>

int main(void)
{
	fclose(stdin);
	fclose(stdout);
	fclose(stderr);
	getchar();
	
	printf("hello world!\n");
	perror("hello world!\n");

	return 0;
}

6.fgets

fgets()函数用于从流中读取一行文本,最多读取n-1个字符,并在遇到换行符、EOF(文件结束)或其他错误时停止读取。读取的字符串会被自动添加一个空字符\0作为字符串的终止符。

char *fgets(char *str, int n, FILE *stream);

参数

•str:指向一个字符数组的指针,用于存储读取的字符串。

•n:要读取的最大字符数(不包括终止符\0)。(n的大小最好比要读的一行文本刚好大一点。)

•stream:指向一个打开的文件流的指针。

返回值        fgets()函数成功时返回str,失败时返回NULL。

#include <stdio.h>
int main(void)
{
	FILE *fp = fopen("/etc/passwd","r");

	if(NULL == fp)
	{
		printf("fopen error\n");
		return 1;
	}
	while(1)
	{
		char buf[512] = {0};
		char *p = fgets(buf,sizeof(buf),fp);
		if(NULL == p)
		{
			break;
		}
		printf("%s",buf);
	}
	fclose(fp);
	return 0;

}

7.fputs() 

fputs()函数用于向流中写入一个字符串,直到遇到空字符\0为止。

int fputs(const char *restrict str, FILE *restrict stream);

参数

•str:指向一个字符串的指针,要写入的字符串。

•stream:指向一个打开的文件流的指针。

返回值        fputs()函数在成功时返回EOF以外的值,在发生错误时返回EOF。

#include<stdio.h>
int main(void)
{
	FILE * fp = fopen("1.txt","w");
	if(NULL == fp)
	{
		printf("fpopen is error\n");
		return 1;
	}
	char buff[] = "hello";
	fputs(buff,fp);
	fputs(",xiao ming1",fp);

	fclose(fp);

	return 0;

}

用fgets和fputs实现文本文件的拷贝

#include <stdio.h>
// ./a.out /etc/passwd 222
int main(int argc,char *argv[])
{
//	FILE *src = fopen("/etc/passwd","r");
//	FILE *dst = fopen("2.txt","w");

	if(argc < 3)
	{
		printf("usage: ./ a.out srcfile dstfile \n");
		return 1;
	}
	FILE *src = fopen(argv[1],"r");   // 这里的argv不能带 “” 因为argv 是一个指针 
	FILE *dst = fopen(argv[2], "w");
	
	if(	NULL == src || NULL == dst)
	{
		printf("fopen is error\n");
		return 1;
	}

	while(1)
	{
		char buf[128] = {0};

		char *p = fgets(buf,sizeof(buf),src);
		if(NULL == p)
		{
			break;
		}
		fputs(buf,dst);
	}

	fclose(src);
	fclose(dst);

	return 0;
}

拷贝之后  可以用vimdiff  filename1 filename2 命令 来查看两个文件一致不一致 。

fgets和fputs 不能拷贝照片 , 为什么?

它们内部对输入输出进行了特殊处理,比如 fgets 会在遇到换行符或达到缓冲区大小限制时停止读取,而 fputs 则会自动添加一个换行符(如果原字符串末尾没有的话),这在处理二进制数据如图片、音频或视频文件时会产生问题。


二进制文件的读写: fread()/fwrite()

不常用 ,常用的是 write()和read()。

8.fseek

int fseek(FILE *stream, long offset, int whence);

功能:将stream流文件中的文件指针从whence位置开始偏移offset字节的长度。
参数:stream  要移动文件指针的目标文件流对象。注意:不支持设备文件,一般用于普通文件。
           offset  要在文件内偏移的距离,单位字节。
             如果值为整数,则向文件末尾偏移
                  值为负数,则向文件开头偏移
  whence  偏移的起始位置,由系统定义的三个宏开始。
        SEEK_SET  文件的开头位置 
        SEEK_CUR  文件的当前位置
        SEEK_END  文件的末尾位置
返回值:
        成功: 返回 0
        失败:  -1;

9.ftell

它的主要作用是确定与以二进制模式或文本模式(在区分这两种模式的系统上)打开的流相关联的输入/输出指针的当前位置(以字节为单位)。
 

long ftell(FILE *stream);

ftell 返回流的当前位置作为一个 long 类型的整数值。如果发生错误,则返回 LONG_MIN(可表示的最小 long 值),并且设置全局变量 errno 来指示错误。

统计文件所占字节数:

#include<stdio.h>
int main(int argc, const char *argv[])
{
	if(argc !=2)
	{
		printf("enter error");
		return -1;
	}

	FILE *fp = fopen(argv[1],"r");
	if(NULL == fp)
	{
		printf("fopen is error\n");
		return 1;
	}

	fseek(fp,0,SEEK_END);
	long size = ftell(fp);
	printf("size = %ld\n",size);

	fclose(fp);

	return 0;
}

 10.rewind

void rewind(FILE *stream);

 用于将文件流的读写位置指针重置到文件的开头。

五、标准IO缓存

缓存分为3类:
            1.全缓存  4k
                缓存区满刷新
                
                刷新条件:
                    1.缓存区存满刷新(全缓存大小:4096)
                    2.fflush函数强制刷新
                    3.程序结束/fclose刷新

                与文件建立的缓存

            2.行缓存  1k
                遇到\n刷新  

                刷新条件:
                    1.缓存区存满刷新(行缓存大小:1024)
                    2.遇到\n刷新 
                    3.fflush函数强制刷新
                    4.程序结束/fclose刷新

                与终端建立的缓存            stdin   stdout 

            3.不缓存
                直接刷新

                缓存区大小 0k               stderr

                人机交互、界面控制、出错处理

fflush()

它的主要作用是清除(刷新)与特定流相关联的输出缓冲区,如果参数设置为 NULL 则会刷新所有流。

int fflush(FILE *stream);

            4.setvbuf
              int setvbuf(FILE *stream, char *buf, int mode, size_t size);
              功能:
                改变一个流的缓存类型
              参数:
                stream:文件流指针
                buf:指定缓存空间的首地址
                mode:
                    _IONBF  不缓存
                    _IOLBF  行缓存
                    _IOFBF  全缓存
                size:
                    设定缓存区的大小
              返回值:
                成功返回0 
                失败返回非0 

#include <stdio.h>

int main(void)
{
	char tmpbuff[4096] = {0};

//	setvbuf(stdout, NULL, _IONBF, 0);		//设置成不缓存
//	setvbuf(stdout, tmpbuff, _IOFBF, 4096);	//设置成全缓存
	setvbuf(stdout, tmpbuff, _IOLBF, 1024);	//设置成行缓存

	printf("hello world\n");
	
	while (1)
	{
		
	}

	return 0;
}

vim 编辑器对齐操作

选中代码 然后按 =  

练习:1.统计一个本本文件中 字母a~z 的个数

#include <stdio.h>
#include <string.h>

int do_count(char *buf,int arr[])
{
	while(*buf) // 遇到字符串末尾的 /0 时跳出循环
	{
		char c = *buf;
		arr[c]++;
		buf++;
	}

	return 0;
}
int main(void)
{
	FILE * fp = fopen ("/etc/passwd" , "r");
	if(NULL == fp )
	{
		printf("fopen error\n");
		return -1;
	}

	int array[256] = {0};
	while(1)
	{
		char buf[512] = {0};
		if(NULL == fgets(buf,sizeof(buf),fp))
		{
			break;
		}
		do_count(buf,array);
	}
	fclose(fp);
	
	int i = 0;
	for(i = 97;i<=122;++i)
	{
		printf(" %c have %d\n",i,array[i]);
	}

	return 0;
}

vim t.c -> vim编辑器:main -> tab 健补全

    int main(int argc,char *argv[]){
    return 0;
    }

[Windows] 发票识别工具。支持xml、pdf、ofd文件。 发票识别是财务自动化中的关键环节,支持多种格式(XML、PDF、OFD)的识别工具能显著提升工作效率。以下介绍基于Windows平台开发此类工具的技术方案。发票识别是财务自动化中的关键环节,支持多种格式(XML、PDF、OFD)的识别工具能显著提升工作效率。以下介绍基于Windows平台开发此类工具的技术方案。 阅读详情

相关推荐

2023东华大学OJ机试题22-70

东华大学计算机考研复试机试22 约瑟夫环223、整除的尾数24、回文质数25、汽水瓶26、阶乘最后的非0位27、算菜价28、 水果价格29、求奇数的乘积30、求最晚和最早日期31、素数32、计算e33 数字之和34 繁殖问题35 奇妙的数字36 整除的尾数37 黑色星期五38 树39 约瑟夫环40 最大与最小41 环42 求数列项43 最高频率44 三艘船45 回文数46 特殊四位数47 最大值48 数列149 修理牛棚50 按要求输出序列51 部落人乘法52 序列53 双重回文数54 等差数列55 人见人

m0_49263811的博客 2589

标准 IO

在每一个操作系统下面,对文件的管理和接口都是不一样的Linux:open/close/read/write/lseek... Linux的系统IOAPP------>进程文件表项的下标(文件描述符)----->struct file *------>struct file ----->struct inode ----->硬件同一个文件,在不同的操作系统下面,操作文件的方法和代码可能不一样。

qq_68915288的博客 1341

[华中科技计组实验]logisim完成单周期5级流水MIPS CPU

[华中科技计组实验]logisim完成单周期5级流水MIPS32 CPU hu~,终于完成了,真是费劲呐 支持24条指令,5级流水线,可以对分支指令处理,寄存器冲突处理,指令ROM为1K,数据RAM为1M,32位MIPS指令集CPU 但是… 大量使用比较器造成硬件开销巨大,测试一下发现这尼玛真是个老爷车还没单周期跑的快,自己电脑cpu占百分之八九十只能跑到20多赫兹,一个走马灯跑了半天,可优化空间太大了,写了那么多天造成这个破样,有点悲剧。。。 先放个图大伙参考就行了,要是有人想听思路的话接下来再更 .

zrc的博客 1万+

【IO】什么是IO、标准IO、文件IO

IO是计算机中的输入/输出(Input/Output)的简称,指的是之间进行数据交换的过程。输入是指将外部数据传输到计算机系统中,输出是指将计算机系统中的数据传输到外部设备中。在计算机中,输入可以来自多种来源,如键盘、鼠标、触摸屏、传感器等。输出可以发送到显示器、打印机、扬声器、存储设备等。IO操作是计算机系统中的重要组成部分,它使计算机能够与用户交互,接收用户的输入,并将计算结果输出给用户。通过IO操作,计算机可以读取外部数据、存储数据、显示信息、传输数据等。

m0_56844552的博客 5647

Redis+QMT实战:如何用Stream模式实现聚宽策略的毫秒级跟单(附完整代码)

本文详细介绍了如何利用Redis Stream模式构建一个低延迟、高可靠的量化交易信号中继系统,实现从聚宽策略到本地QMT的毫秒级跟单。通过对比传统方案,解析了Redis Stream在消息持久化、消费组和显式确认方面的核心优势,并提供了完整的架构设计思路与核心代码实现,帮助量化开发者解决云端策略信号稳定传递至本地实盘的难题。

weixin_29280657的博客 468

超详细流式细胞术全流程解析:从样本制备到结果分析全攻略

流式细胞术(Flow Cytometry)是现代生物学和医学研究中不可或缺的高通量分析技术,可实现对细胞表型、功能状态、细胞周期等多维度参数的快速检测。本文将从实验全流程出发,详解样本制备、上机操作、参数设置及结果处理的核心要点,帮助科研人员精准掌握流式实验关键技术。

good_rrrrr的博客 3854

【IO操作】标准IO和文件IO

主要介绍了标准 I/O 和文件 I/O 的区别,以及关于这两种 I/O 操作的详细介绍。标准 I/O 是基于 C 语言的库函数,而文件 I/O 是基于 Linux 系统调用的操作。文章分析了它们的区别,包括在跨平台性、系统调用频率以及文件描述符和文件指针等方面的不同。此外,文章总结了标准 I/O 和文件 I/O 中常用的函数、参数、返回值和常见用法,并提供了示例代码以便加深理解。

Atcxr的博客 2245

阿里云百炼全解析:一站式大模型开发平台的架构与行业实践

摘要: 阿里云百炼平台通过一站式架构革新大模型开发范式,将传统碎片化工具链整合为统一工作流,实现开发周期从月级到小时级的跃迁。其核心架构包含接入层、引擎层与资源层,关键技术突破包括MCP服务协议、多模态引擎及高性能训练优化。平台提供全生命周期开发支持,从数据准备到模型部署,并通过VPC隔离、数据加密构建企业级安全体系。已在医疗、电力等行业实现显著增效,如阿斯利康药物分析系统准确率提升至95%。未来将向多Agent协同、边缘计算等方向演进,推动AI技术深度融入产业核心。

fudaihb的博客 1983

Linux中的系统IO与标准IO

一、系统IO与标准IO的区别 什么是系统IO与标准IO:(IO为Input/Output,即输入/输出接口) 系统IO:由操作系统直接提供的接口函数 标准IO:由标准C库(第三方库)提供的接口函数(通过封装操作系统提供的系统IO,再给用户使用) 系统IO和标准IO的主要区别: 系统IO:不带缓冲机制,系统IO可以操作普通文件与驱动文件 标准IO:带缓冲机制,标准IO只可以操作普通...

不吃鱼的猫的博客 6976

【Agent从入门到实践】01 从“工具函数”到“智能体”:Agent与传统程序的核心区别

传统程序是“你教它怎么做,它才做什么”,Agent是“你告诉它做什么,它自己想怎么做”。从技术层面来说,这个区别的背后,是Agent融合了大语言模型(LLM)、记忆能力、工具调用能力、决策能力等技术,才实现了“自主思考”和“灵活执行”,而这些技术,咱们会在后面的章节中一步步拆解,手把手教大家实现。

人工智能AI技术 979

化工热力学软件:Aspen Plus二次开发_(9).过程控制与动态模拟v1

Aspen Plus 提供了丰富的过程控制工具和方法,可以用于静态和动态过程的模拟和控制策略的开发。通过控制回路设计、动态模拟、优化工具和数据交换接口,用户可以设计和优化各种复杂的控制策略,提高化工生产的稳定性和效率。此外,结合外部软件(如MATLAB、Simulink、LabVIEW等),可以实现更高级的控制策略,如自适应控制和模型预测控制,进一步提升过程控制的精度和灵活性。希望本文的内容能帮助用户更好地理解和应用Aspen Plus中的过程控制功能。

kkchenjj的博客 397

IO——标准IO

注:当a+的方式打开文件时,写只能在末尾进行追加,定位操作是无法改变写的位置,但是可以改变读的位置。a+:读和追加,文件不存在创建,存在追加,读文件流定位到文件开头,写文件流定位到文件末尾。参数: ptr :是一个指针,是存放数据的存储空间的起始地址,用来存放读取元素。a:追加(在末尾写),文件不存在创建,存在追加,文件流定位到文件末尾。参数: ptr :是一个指针,保存要输出数据的空间的地址。r+:可读可写,当文件不存在时报错,文件流定位到文件开头。r:只读,当文件不存在时报错,文件流定位到文件开头。

ka1es的博客 2216

【Claude】组织级认证限制报错已解决(4 种)

报错被禁用的是什么谁能解除应急方案整个 Console 组织Anthropic 支持换账户 / 订阅凭证API key 认证方式你的组织管理员用订阅/login订阅 OAuth 登录你的组织管理员用 API keyRoutines 功能你的组织所有者手动计划任务替代共同排查模式/status确认当前凭证;检查环境变量;看清报错消息里命名的是什么(key?组织访问?),对症清除;管理员层面的限制,找管理员解锁。

博客 1万+

io学习----->标准io

以读写(追加)的方式打开文件(写入到文件的结尾)如果文件不存在则创建文件,如果文件存在则流指针指向文件的结尾。以追加的方式打开文件(写入到文件的结尾)如果文件不存在则创建文件,如果文件存在则流指针指向文件的结尾。以读写的方式打开文件. ,流指针指向文件的起始地址,如果文件存在则打开成功,不存在则打开失败。以读写的方式打开文件,如果文件不存在则创建文件,如果文件存在则清空文件。以写的方式打开文件,如果文件不存在则创建文件,如果文件存在则清空文件。fputc:输出的函数,对于文件,就是写入的意思。

qq_66012182的博客 2171

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

文件IO、标准IO的区别及其效率

系统IO:Unix/Linux下的系统文件IO,即文件访问机制不经过操作系统内核的缓存,数据直接在磁盘和应用程序地址空间进行传输。 标准IO:带缓存的IO,又称为标准IO(C标准库中提供了标准IO库,即stdio),它实现了跨平台的用户缓存解决方案。 文件IO 和 标准IO的概念 【文件I/O】 文件I/O是操作系统封装了一系列open、close、write、read等API函数构成的一套用来读、写文件的接口供应用程序使用,通过这些接口可以实现对文件的读写操作,但是效率并不是最...

llzhang_fly的博客 6750

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

标准IO和文件IO

简述 对文件进行操作,有文件IO和标准IO两种 标准IO: 采用库函数的方式对文件进行读写操作(对文件读写的函数接口出自于库)stdio.h 文件IO:采用系统调用的方式对文件进行读写操作(对文件的读写操作功能有内核提供),并且不带缓存, 系统调用:内核提供的一个接口层,用用程序通过此接口可以实现内核为应用程序提供的各种功能 系统调用的流程: 封装函数 -- 系统调...

hanfs390的博客 854

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

标准IO

1.标准IO和系统IO的区别 .1标准IO总是调用系统IO来完成自己的功能 系统IO:每个操作系统都有自己的IO方式 windows: openfile->内核->硬件 linux: open->内核->硬件 标准IO: windows: fopen->openfile->内核->硬件 linux: fopen-&...

weixin_40224996的博客 245

标准IO总结

标准IO总结

2403_82436914的博客 1305

标准IO与系统IO的区别

1.系统IO操作文件时是无缓冲输入,一般用于操作字符设备文件(LCD, LED, BEEP ...,数据需 要实时刷新) 标准IO操作文件时是有缓冲输入,一般用于操作普通文件(.txt, .jpg...) 2.系统IO是Linux操作系统提供函数接口 标准IO标准C语言库函数提供的 系统IO的API接口有:open read write close lseek ...

Allllin的博客 5270

IO之标准IO

IO之标准IO

qq_57018268的博客 660

文件IO与标准IO总结

标准 IO文件IO概念C库中定义的一组用于输入输出的函数posix中定义的一组输入输出的函数特点有缓冲机制,减少系统调用,提高效率无缓冲机制围绕流进行操作,FILE *p围绕文件描述符操作,非负整数默认打开三个流:stdin/stdout/stderr默认打开三个文件描述符:0/1/2只能操作普通文件可以操作除了目录以外的任意类型文件可移植性更强可移植性弱函数打开文件: fopen \freopen打开文件: open关闭文件 :fclose关闭文件:close。

weixin_67273669的博客 952

系统IO跟标准IO的联系与区别

一、         什么是系统IO和标准IO 系统IO:系统IO又称文件IO,也称低级磁盘IO,属于不带缓存的IO(unbuffered I/O)。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与OS绑定,特定于Linux或unix平台。标准IO:标准IO被称为高级磁盘IO,标准IO提供三种类型的缓存:u 全缓存:当填满标准IO缓存后才进行实际的IO操作u 行缓存:当输入或输出中遇到...

qq_35143747的博客 4653

标准IO(2)、文件IO

我们通过fwrite写入的内容不是直接进入内核中的buf,而是先进入应用层标准IO库自己维护的buf中,然后标准IO库自己根据操作系统单次write的最佳count来选择好的时机来完成write到内核中的buf中。采用文件I/O的函数接口,每调用一次函数写入字符就会产生一次系统调用。文件I/O是采用系统直接调用的方式,因此当使用这些接口对文件进行操作时,就会立刻触发系统调用过程,即向系统内核发出请求之后,系统内核会收到执行相关代码处理的请求,决定是否将操作硬件资源或返回结果给应用程序。

m0_46417380的博客 1052

文件IO--标准IO

只是说从文件中读取/写入多少字节的数据,并没有指定从文件流中的哪个位置开始读写,标准IO库会为每个打开的文件流保存一个。来描述一个已经打开的文件,然后再这个结构体中创建两个缓冲区(一段内容空间),一个读缓冲区,一个写缓冲区。文本文件: ASCII文件,无组织、无纪律的文件,以字符的ASCII吗来解析的文件。C语言为了统一操作系统对文件的读写的接口,特定指定的一套文件操作的标准接口,称之为。​ 标准IO能操作的文件是不同的系统中通用的普通文件类型。缓冲区的数据要填满这个缓冲区,才同步到外设上去。

lf1593572468的博客 690

标准IO笔记

标准 I/O 库则是标准 C 库中用于文件 I/O 操作(譬如读文件、写文件等)相关的一系列库函数的集合库文件<stdio.h>文件IO和标准IO的区别:1)标准IO是C库函数,文件IO是Linux系统调用2)标准IO是文件IO封装而来,调用标准IO实际是调用文件IO完成实际操作3)标准IO可移植性好,很多操作系统都实现了标准IO库,在不同系统中接口定义几乎一样4)标准IO性能、效率优于文件IO,标准IO维护了自己的stdio缓冲区。

wjlo1的博客 785
上一篇: shell——2月3日总结
下一篇: 文件 IO
望远山而力行
博客等级 码龄7年 619粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值