C语法查缺补漏

蒸汽
蒸汽
发布于 2024-11-06 / 19 阅读
1
0

C语法查缺补漏

1.格式化输入输出

格式化输入

格式化输入scanf:

scanf("i = %d", &i);
printf("i = %d\n", i);

结构体

1.用typedef给结构体取别名

2.结构体不像类,只能放数据

3.数据可能会内存对齐问题(可以省内存)

动态内存分配

内存分配(堆区):

内存释放:

悬空指针问题:

函数指针

double (f) (double)必须加(f),否则按照优先级优先和返回值结合

作用:创建一个函数,然后在别的地方调用---回调函数

文件

内存缺点:断电即失去

分类:文本文件、二进制文件

1.文本文件

缺点:1.不跨平台,可能出现错误(win下\r\n换行,linux \n)或者提前终止(linux中没有eof,如果放到win下可能碰到eof直接终止)

2.占用空间高

二进制文件:

缺点:看不懂

优点:占用小,网络传输等需要高效的场景肯定都是二进制文件读写

缓冲区:

fflush:不需要输出缓冲区,直接输出到文件中

流:

流对象其实就是FILE结构体的对象,有三个指针可以指向头尾和当前读写位置。

文件的打开关闭:

1.fopen:’+‘的模式都可以读也可以写,’b‘的模式代表读写二进制文件

  1. fclose:

文本文件的读写:

1.fgetc/fputc

2.fgets/fputs

序列化:即将内存中的对象持久化(文本格式)xml,json

反序列化:把持久化的对象加载到内存并生成对应的对象

二进制文件的读写:

1.fread:

为什么buf大小设置为4k的整数倍?因为操作系统的页大小为4k

2.fwrite:

文件定位

用前面的函数只能做到顺序读写,文件定位函数可以做到任意读写

错误处理

errno:一个宏,出现错误就把errno设置成对应的错误码(可读性低)

因为errno可读性低,又有strerror(errno)来输出错误信息



评论