当前位置: 首页 > news >正文

嵌入式自学第二十四天(5.20)

(1)系统编程:包括四部分文件操作、进程、网络、数据库。
(2)操作系统主要管理硬件,封装了大量接口(大量函数),利用好这些接口就可以实现对硬件的操作
(3)输入输出是相对于计算机说的。
(4)函数不会用时用man + 函数名 查找。
(5)接下来先学习文件操作函数。
打开文件:FILE *fq = fopen(“文件名”,“权限”);
        FILE *是一个文件流指针,包括文件内容、大小、创建时间等等,这里主要用到文件内容。
        权限:读r 读写r+目标文件必须存在 
        写w 读写w+目标文件不存在会先创建,已存在会清空原内容。
        函数调用成功返回文件流指针,失败返回空指针。
读:fgetc/fgets:前者一次读一个单词,后者一次读一行。

应用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

 

#include <stdio.h>

// ./a.out srcfile1 dstfile2

int main(int argc, char** argv)

{

FILE* src = fopen("1.txt", "r"); // argv[1]

FILE* dst = fopen("2.txt", "w"); // "argv[2]"

if (NULL == src || NULL == dst)

{

fprintf(stderr, "fopen error\n");

return 1;

}

while (1)

{

int c = fgetc(src);

if(EOF == c)

{

break;

}

fputc(c, dst);

}

fclose(dst);

fclose(src);

// system("pause");

return 0;

}

写:fputc/fputs:前者一次写一个单词,后者一次写一行。

应用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

 

#include <stdio.h>

// a.out srcfile dstfile

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

{

if(argc<3)

{

printf("usage:./a.out srcname dstname\n");

return 1;

}

//FILE* fp = fopen("/etc/passwd","r");

FILE* src = fopen(argv[1],"r");

FILE* dst = fopen(argv[2],"w");

if(NULL == src|| NULL == dst)

{

fprintf(stderr,"fopen error\n");

return 1;

}

while(1)

{

char buf[1024]={0};

if(NULL == fgets(buf,sizeof(buf),src))

{

break;

}

fputs(buf,dst);

}

fclose(src);

fclose(dst);

return 0;

}

关闭文件:fclose(fq)

(6)od -t x4 1.txt以二进制格式查看文件,每四个字节一组

    vimdiff对比两个文件内容
    
    int main(int argc, char **argv)
    argv是参数个数,argv[i]是参数。
./a.out 1 2 3 4 5 6,函数中参数argv[i]对应的1到6。
 

http://www.dtcms.com/a/202959.html

相关文章:

  • 门店管理五大痛点解析:如何用数字化系统实现高效运营
  • 如何理解大模型的幻觉输出及RAG技术的应用与实战案例
  • 机器人拖动示教控制
  • Java 03(代码块,内部类,lambda表达式)
  • 前端读取本地项目中 public/a.xlsx 文件中的数据 vue3
  • vuejs处理后端返回数字类型精度丢失问题
  • PID项目---硬件设计
  • 8.MySQL故障排查与生产环境优化
  • AGI大模型(29):LangChain Model模型
  • 数据结构与算法:动态规划中用观察优化枚举
  • 【520特辑】情人节脑影像绘图
  • 更新2011-2025经济类联考 396-真题+解析 PDF
  • Hutool 常用工具类实战指南
  • 【C++】C++的拷贝构造函数介绍使用
  • Java双指针法:原地移除数组元素
  • Unreal5 从入门到精通之如何实现 离线语音识别
  • 【BIO、NIO、AIO的区别?】
  • 05 接口自动化-框架封装思想建立之httprunner框架(中)
  • 目标检测DINO-DETR(2023)详细解读
  • 海康工业相机白平衡比选择器对应的值被重置后,如何恢复原成像
  • 【Code】Foundations 2017- Catalogue, List of Tables, List of Figures
  • iOS Runtime与RunLoop的对比和使用
  • Journal of Real-Time Image Processing 投稿过程
  • 区域双碳治理:数据驱动与系统破局之道
  • 2.4.1死锁的概念
  • 计算机网络通信技术与协议(七)———关于ACL的详细解释
  • 迪菲-赫尔曼密钥交换算法深度解析
  • 重构研发效能:项目管理引领软件工厂迈向智能化
  • 第二届帕鲁杯screenshot
  • 【Linux】第二十一章 管理存储堆栈