推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

linux c 无缓冲输入 Linux

   2023-07-23 网络整理佚名2350
核心提示:读文件:一次性读很多的内容到缓冲区中,然后我们的应用程序只需要从缓冲区读取数据写文件:一次性写内容到缓冲区中,然后再调用一次系统调用写入文件缓冲区就是我们的购物车,当我们需要打印10句hello时,不用去每次调用cpu输出hello,只需要将待打印的5个hello放入缓冲区,经由cpu一次处理即可完成5句话的打印。

文章目录 2.嵌入式 3.目录结构 4.Linux命令 5.直入主题:结构实在是太困了,明天再写 7:IO7.1 7.2 文件相关概念: 7.3 和FILE指针 7.4 前言

刚开始学习嵌入式人工智能,基于Linux的C语言课程。

零。 (这是我第一次发博客,难免有错误,希望大家指正。本文内容都是老师在课堂上讲授的,至于没有写到的地方,老师没有提及,以后工作中可能会更新和遗漏。) 1.编程环境介绍虚拟机

虚拟机是在我们的计算机上虚拟化的一台PC。

为什么要安装虚拟机

学习C语言的方法有很多种,当然编译环境也有很多种。 刚接触C语言时,使用的是DEV C++和VS环境。 这两个软件操作方便,不需要记住很多命令,调试也方便,但是都是安装在系统上的。 学习Linux就需要使用它,所以需要在上面安装一个虚拟机来模拟Linux操作系统。

常用的Linux系统

常用的Linux操作系统有:小红帽()、、、等。我使用的系统

2.嵌入解释解释一下什么叫td嵌入

基于计算机技术,软件和硬件都可以量身定制。 所谓软硬件可量身定制就是:用软件来控制硬件,根据不同的需求实现不同的功能,这就叫量身定制。简而言之:根据用户对产品的需求进行定制,就叫量身定制

剪下

裁剪分为两部分,一是软件裁剪:实现。二是硬件裁剪:硬件模块电路的搭建

3、目录结构

目录结构:像一棵倒立的树,根在上面,枝条越往下走

目录结构:像森林一样

Linux系统下一切皆文件

Linux系统下的目录分布:

根目录(/):Linux文件系统的顶级目录,所有东西都在它下面,也是从它开始

主目录(~或主目录或工作目录或HOME):工作目录

注意:

1、普通用户没有权限操作主目录以上的目录。 如果要操作,在命令前面加上sudo

2、HOME是主目录,但是home不是主目录,而是我们的主目录在home目录下,也就是主目录

4.Linux命令5.

。 。 .等我有空的时候再补上

开门见山:结构概念

结构体是一种自定义数据类型,是一类事物相关属性的集合

定义

struct 结构体名
{
	属性1;
	属性2;
	...
	属性n;
};		//花括号最后一定加分号;

例如,如果要统计学生的姓名、年龄和身高,可以定义一个结构体来存储这三个变量:

struct person		//定义了一个结构体,它的数据类型为:struct person
{
	char name[30];	//字符串数组:存放姓名
	int height;		//整形变量来存放身高数据
};					//结尾要加分号

结构初始化

通过 int a = 5; (数据类型:int 变量名:a)

可以看出:结构体名变量名={...};

其中(结构名称)是数据类型,

例如 = { "刘雅琼", 168}; // 数据类型为变量名 // 结构体中第一个属性是name,属于字符串数组,所以值为“...”,第二个是int类型,所以值为一个数字

访问方式一:通过结构体变量访问成员

#include
struct person
{
	char name[30];
	int height;
};
int main(void)
{
	struct person student = {"liu ya qiong" , 168};	//定义一个变量student,数据类型为struct person
	printf("%Sn" , student.name);		//通过结构体变量访问成员
	printf("%dn" , student.height);	//同上
	return 0;
}

方法二:通过结构体指针访问成员

指针变量名->成员;

//定义一个整型指针

数据类型指针变量名;

int *p = NULL;

*pp = NULL;

#include
struct person 		//定义一个学生信息结构体
{
	char name[30];	//姓名
	int height;	//英语
	
};
void Input(struct person *p)		//输入函数,定义一个struct person 类型的结构体指针p
{
		printf("请输入:姓名,身高n");
		scanf("%s %d" , p->name , &p->height);
									//%s,输入的是字符串数组,所以不用取地址,后面的身高成绩需要取地址
									//printf("%s %d",p->name,p->height);输入函数测试代码
}
void Output(struct person *p)		//输出函数,同上
{		
		printf("姓名:%s " , p->name );
		printf("身高:%d " , p->height);
}
int main(void)						//主函数
{
	struct person student = {0};	//初始化全为0
	Input(&student);				//将student这个结构体的地址传给输入函数
	Output(&student);				//将student结构体的地址传给输出函数
	return 0;
}

运行结果:

太困了,明天写更新,参见另一篇文章:六:模块化编程

模块化编程

七:IO 7.1 I:输入——— O:

顾名思义:输入和输出

我们学到的输入是:scanf()、gtes()

输出为:()、puts()

从规范上来说:输入是将数据写入内存,输出是将数据从内存读取到文件。 换句话说:输入是将数据从键盘输入到内存中,输出是将数据从内存输出到终端。

##7.1 IO的分类

IO分为两类,一类是标准IO,一类是文件IO。

标准IO:按照C语言标准进行输入输出的一系列函数,由ANSI C标准的标准I/O库规定:由美国国家协会(ANSI)和国际标准组织制定。

标准输入/输出:

1 可以跨平台,可以在Linux下使用,也可以在Linux下使用

标准io通过缓冲机制减少系统调用,达到更高的效率

文件流指针:通过结构体进行操作

特征

(1) 有缓冲区 (2) 由 FILE* 操作

7.2 文档相关概念:

文件:相关数据(视频、图像)的有序集合

文件名:该数据集的名称

7.2.1 文件类型:

1. 普通文件——

(1) ASCII文件(文本文件)

(2) 二进制文件(视频、图片)

2.目录文件d

3.链接文件l

4.字符设备文件c

5.块设备文件b

6. 管道文件p

7.文件

7.2.2 相关函数:

系统调用:操作系统向应用程序提供的接口(函数)

:操作系统调用:调用函数来调用操作系统提供的函数

读文件:一次性读入大量内容到缓冲区中,然后我们的应用程序只需要从缓冲区中读取数据即可

写文件:一次性将内容写入缓冲区,然后调用系统调用写入文件

7.3 流和文件指针

FILE指针:每个使用过的文件在内存中开辟一块区域来存储该文件的相关信息。 这些信息存储在一个结构体类型的变量中,该变量由系统定义,命名为FILE。

7.3.1 流

只要文件打开了就会有缓冲区,有缓冲区就会有流:字节进出(内存和缓存之间的字节)

注意:只有标准io才有流的概念

注意:标准I/O库的所有操作都是围绕()进行的。 在标准 I/O 中,流由 FILE * 描述。

编号 2001

文本流:'2''0''0''1'

二进制流:00001

7.4 缓冲区

所谓缓冲区。 顾名思义,它充当缓冲区,可以暂时存储一些数据。 举个栗子:如果我在上下了一个PCB项目的订单,板子正在加工中,现在需要采购带有BOM的元件,比如电阻、电容、二极管、LED等,那么你是一一下单的吗? 或者在某宝的购物车里下单? 当然,如果没有购物车功能,我们只能一项一项下单,一遍遍输入支付密码,确认订单。 但现在它有了购物车的功能,我们只需要将需要的组件全部添加到购物车中,一次性结账即可。 这将大大减少我们大脑的使用。 ------

缓冲区就是我们的购物车。 当我们需要打印10句hello时,我们不需要每次都调用cpu来输出hello。 我们只需要把要打印的5个hello放入缓冲区,CPU一次处理就可以完成5句话的打印。

缓冲机制的作用:减少系统调用次数

7.4.1 缓存分类:(1)全缓存

当缓冲区满时,程序运行结束,强制刷新缓冲区,则缓冲区会被刷新

(2)行缓存

当缓冲区满时,程序结束,强制刷新缓冲区,遇到换行符时刷新缓冲区

(3)无缓存

程序运行时默认打开三个文件,标准输入、标准输出、标准错误。 对应的流指针有:stdin, ,

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON