当前位置: 首页 > 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。
 

相关文章:

  • 门店管理五大痛点解析:如何用数字化系统实现高效运营
  • 如何理解大模型的幻觉输出及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)详细解读
  • 海康工业相机白平衡比选择器对应的值被重置后,如何恢复原成像
  • 神舟二十号航天员乘组将于近日择机实施第一次出舱活动
  • 破局之路,阳光保险何以向“新”而行
  • 斗鱼一季度直播收入降近三成,语音社交服务推高广告等收入,称将持续打击涉赌行为
  • 港股上市首日大涨,宁德时代“新动力”何在?曾毓群详谈零碳科技布局
  • 又有明星分析师晋升管理层:“白金分析师”武超则已任中信建投证券党委委员
  • 一座与人才共成长的理想之城,浙江嘉兴为何如此吸引人?