- 博客(17)
- 收藏
- 关注
原创 linux系统编程 -- 文件io
其中有个 文件IO,一般都是对设备文件操作,当然也可以对普通文件进行操作。O_EXCL,需要和O_CREAT同时使用,表示新建的文件不能存在,成功,否则open就会失败。内核每打开一个文件就会获得一个文件 描述符。O_ASYNC异步io,什么时候io不确定,很小的非负的整数 int 0-1023。文件IO 用于底层设备相关的 开发,但是。buf:要写入文件的字符串的首地址。通过文件描述符向文件中写一串数据。获得一个文件流指针中的文件描述符。通过文件描述符读取文件中的数据。O_CREAT, 创建文件。
2024-08-14 10:24:33
410
原创 linux系统编程 -- 标准io
通过以上总结,你可以更好地理解C语言标准I/O库中的缓冲机制,并在实际编程中合理利用这些机制来优化程序的I/O性能和行为。- 在C语言中,`FILE`结构体定义了流,而`FILE*`(流对象或文件流指针)用于指向流。- `stdio.h`是标准I/O库的头文件,它包含了进行输入输出操作所需的函数声明。- **手动刷新**:通过调用`fflush`函数,可以手动清空缓冲区,确保数据立即输出。- 通过`fflush(fp);- 使用工具如`gdb`可以查看`FILE`结构体的状态,了解缓冲区的使用情况。
2024-08-14 00:39:20
672
原创 C语言之指针高级--指针操作二维整型、字符型数组、函数指针
二维数组 也 符合数组的特点 ,即连续性,有序性,单一性。如果对二维数组本质比较清楚,那么a[2][3]中,a[0](即所谓的“第一行”)的类型是int [3]这种数组类型,由此可以推断 &a[0] 对应就是 int [3]*,只不过C语言中不允许这种写法,所以正确的写法是int (*) [3],即定义了一个数组类型的指针,就是。若a是二维数组,则a[i] 代表一维数组名,它只是一个地址,并不代表某一个元素的值,所以a 、a+i、a[i]、*(a+i)、*(a+i)+j、a[i] + j都是地址;
2024-08-13 01:27:12
843
原创 C语言之指针进阶 -- 操作一维整型、字符型数组
(2).const char *做形参,实参还可以是数组名,指针变量 char *p //const char *p ,可以直接是一个字符串常量 提高参数的适用性。表示 p指向了 字符串常量区中的 "hello",因为 是指向了字符串常量区 ,只能做读取操作,不能修改,虽然可以运行,但是会出现段错误。此时数组名a的类型就是int [5],(去掉标识符,剩下的就是它对应的类型),a的值就是元素的首地址。①const int *p //const此时限定的是基类型,表示不能通过*p的方式,修改基类型数据。
2024-08-08 21:24:07
638
原创 C语言进阶之指针基础 -- 概念,变量,定义,引用,指针传参
注意区分 int *p 与 *p的含义,前者是表示定义了一个指针类型(int *)的变量p,需要对p进行赋值,如int a = 10;②*p // 表示访问 p所指向的 基类型的 内存空间。step3: 将偏移出的这块空间,当做一个基类型变量来看 //*p运算完的效果。所以,*p最终运算效果 相当于就是一个基类型的变量,即*p <=> a。基类型的作用是表示该指针类型 所指向的内存空间 存放什么类型的数据。eg:int * p //表示此时定义了一个指针类型的变量p。
2024-08-06 22:48:39
359
原创 C语言之预处理
语法:#define 宏名 宏值注意:1. 预处理命令 都是以 # 开头的2. 宏名 命名规则 和 之前标识符命名规则一致注意: 宏名一般都写大写 ,以区别与普通变量名3. 预处理 实际上 是将 宏名 用 宏值(预处理阶段的 字符串) 进行文本替换注意: c语言字符串中出现的 "宏名" 不会被替换4. 应用a. 提高代码可读性b. 一改全改,方便代码修改5. 宏名的 作用域#undef 宏名表示 取消 宏名的 定义。
2024-08-05 21:38:50
677
原创 C语言进阶之函数①
类型标识符 函数名 (形式参数)函数体代码函数定义的位置:1.main函数之前。2.main函数之后,如果是在main之后,需要在使用(函数调用)前,作函数声明。函数头+分号 就是函数声明。
2024-08-02 23:40:06
833
原创 C语言之数组③ --- 一维字符型,二维数组
C语言中,字符数组可以用来存储字符串 ,而字符串在内存中存储的方式 也是以 字符数组形式存储的。在使用时,需要注意处理的是字符串还是数组。若处理的是字符串,操作的时候,往往以 结束标志 '\0'为 操作依据,若处理的是数组,操作的时候,往往以 数组长度 作为操作依据。字符串 有一个专门的结束标志 '\0',在内存中也要占一个字节。只要是字符串,必须有'\0'。比如字符串“hello”,它的字符串长度是5个字节,但是它所占的内存空间字节数实际上是6个。数据类型 数组名[数组长度];
2024-07-31 23:23:45
762
原创 C语言进阶之数组② --- 连续排序、冒泡排序、插入排序、二分查找
在学习排序的过程中,需要注意掌握每一个排序的三个要点:了解算法思想 ,掌握C语言如何实现的,如何应用.补充:1.从键盘输入一串数组元素,如何找出这个数组中的最大值,下面是示范代码。其主要思想是:先把一个值a[0]拿出来,充当最大值max,然后依次从a[1]开始往后的值,逐个与max比较,若a[i]比max大,则把a[i]的值赋给max。遍历完数组后,max里的值就是最大值,整个过程类似于其它数组元素与 a[0] “打擂台”。
2024-07-30 22:16:40
815
原创 C语言进阶之数组①
为什么要使用数组?当统计一个班级中每个人的身高体重时,需要定义很多个变量要存放,这样就会变得非常繁琐,因此提出了数组,用来批量地处理多个数据。所以我们可以对数组定义一个初步的概念:数组,就是一组相同类型数据的集合。需要说明的是数组也是一种数据类型。
2024-07-29 21:44:55
1414
原创 C语言基础之流程控制
任何一个程序都是有这三种结构组合而成C语言通过关系运算和逻辑运算来构造选择判断的条件。关系运算符:关系表达式的结果在C语言中用int型来记录,用非0和0来表示真和假注意 : 0<a<5 ---((0 < a )< 5)//与数学上的运算有所不同逻辑运算符:&&(与) || (或)!(非)&&:一假则假 --- 短路特性|| :一真则真 ---短路特性!:真假相对。
2024-07-29 20:59:09
2055
原创 C语言基础之输入输出
C语言本身并不提供输入输出功能,使用的是C语言函数库的输入输出函数,输入输出类型主要有以下几组:getchar / putchar ------ 操作一个字符scanf / printf ------ 格式化的函数get / put ------ 操作一个字符串本文主要介绍前两种。
2024-07-26 21:30:44
553
原创 C语言基础之运算符
有符号短类型 =>长类型 ------ 符号位扩展 (高位补满符号位,1补1,0补0)a += 1 ------ a = (a + 1) ----- /=,%=,-=,*= 也类似。b.结合性 ------ 混合计算时,同一优先级按照结合性结合,比如作加减运算时,从左往右。------ constant -----常量。a++ ------ 后置加加 ------ 先用(表达式的结果)后加(让i自增)(1)运算符:+(加),-(减),*(乘),/(除),%(求余),++(自加),--(自减)
2024-07-25 21:05:51
1509
原创 C语言基础之数据类型-整型和浮点型
----- 也可以是变量名 sizeof(a)sizeof(运算数)------ 计算运算数所代表的数据类型占用的内存空间的字节数。a. 正数 ------ 原码,反码,补码都是一样的,原码即转换成的二进制数。long long ------ 长长整型,占8个字节。二进制与十六进制转换 ------ 1位十六进制数对应4位二进制数。short ------ 短整型,占2个字节。long ------ 长整型,占8个字节。------ 1.数字、字母、下划线组成。int ------ 整型,占4个字节。
2024-07-24 21:48:09
925
原创 学习嵌入式的第一天
cp dir1 dir2 -r -------若源文件是文件夹,需加-r,-r表示递归拷贝。mkdir -p 1/2/3 {mkdir 1/2/3 -p} -------创建多级目录。ls -lh 目录名/文件名 --------属性中,大小以k、m、g、t形式显示。rm dir -rf -------- force,强制删除,危险操作,谨慎执行。ls -a ------ all ,可以查看所有文件,包含隐藏文件。rm dir -r -------删除目录时,需要加-r。
2024-07-23 20:48:38
267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人