首页 > 其他分享 >新员工一口气写完了这些C语言例子,领导给他转正了!

新员工一口气写完了这些C语言例子,领导给他转正了!

时间:2024-08-25 20:37:18浏览次数:14  
标签:转正 int unsigned 员工 char 数组 串口 array C语言

持续更新中...

很多想从事嵌入式Linux开发的老铁问一口君,有没有快速提升自己编程水平的小例子?

一口君根据自己多年工作经验,整理了一些基于Linux的c语言的非常实用的小例子,

这些例子在嵌入式开发工作中,或多或少都会用到。

看看你们会做多少?

一、基础C语言

1. 排序算法

给指定数组排序,可以是任意一种排序算法,比如冒泡排序

函数定义如下,

bubble_sort(char dest[],char src[],int len)

2. 将一个unsigned char array[]数组元素实现bit位逆序

比如:array[0] = 0x17(0001 0111),转换后array[0] = 0xe8(1110 1000)

函数定义如下:

int reverse(unsigned char dest[],unsigned char src[],int len)

3. 将一个unsigned int array[]数组元素实现字节序转换

比如array[0] = 0x12345678 ,转换后array[0] = 0x78563412

函数定义如下:

myhtol(int dest[],int src[],int len)

4. 将一个unsigned char array[]数组,每一个字节,转换为二进制,每一个bit占一个字节,将结果存储到新的数组中,同时也可以实现将这新的数组还原

比如array[0] = 0x17 (0001 0111) array[1] = 0x32 (0011 0010)

新的数组dest[0] ~dest15] 为 0 ,0,0,1,0,1,1,1, 0,0,1,1,1,0,0,1,0

函数定义如下:

字节数组转为bit数组
int Hex2bit(unsigned char dest[],unsigned char src[],int len)
返回值为新的bit数组的有效元素个数

bit数组还原为Byte数组
int bit2Hex(unsigned char dest[],unsigned char src[],int len)
返回值为还原后的Byte数组的有效元素个数

5. 帧格式转换

将一个char数组,所有的7e 转成 7d 5e ,7d转成7d 5d,并能还原

二、Linux系统编程

1. 文件I/O(open、read、write、lseek)

1) 打开一个文件,如果不存在则创建

2)复制文件为指定文件名

3)读取指定文件,每隔2个字节,提取2个字节,并将结果存储到指定文件

4)修改某个文件指定行的内容,将当前日期更新到指定位置

#define VERSION "2024-6-21"

2. 串口

1)以制定的配置打开指定串口,从串口读取一定长度的数据,并将该数据直接从串口写回

【粉丝问答8】用C语言在Linux下实现CC2530上位机-1

2)从串口数据中解析出有效数据(有点难)

假定需要从串口接收到的数据帧格式如下:

7e xx xx xx xx xx xx xx 7e

7e中间位有效数据区,要求能够从串口数据中提取出有效数据

注意:从串口读取的数据并不是规则的,7e可能在一组数据开头、中间、结尾,并且一对7e可能不在同一次读取到的帧数据中。

7E头解析的那些事儿(帧格式分析实例)

3. 进程

1)创建子进程,并分别在创建前后打开同一个文件,分析父子进程同时操作该文件之间的影响。

2)编写一个守护进程

3)通过管道(无名管道和有名管道),实现进程间通信

4. 线程

1) 创建2个线程,一个线程向全局数组写数据(数组尽量大一些),一个线程打印该全局数组,分析结果

2)互斥锁使用

创建2个线程,通过互斥锁实现互斥访问某个指定串口

3) 条件变量

创建2个线程,线程2的执行必须是线程1在完成某个动作之后(比如sleep5秒之后)才可以执行。

5. 信号

给信号SIGINT注册指定回调函数,

三、网络

1. 编写1个C/S架构的udp/tcp并发服务器

服务器收到任意客户端数据,都直接回传给该客户端

2. 基于socket(tcp/udp)实现网络文件传输

3. 基于socket(tcp/udp)实现一个建议信令传输协议

typedef struct _protocol_s{
	int cmd;
    …………
	char data[10];
}PROTOCOL_S;

4. 读取当前系统所有网口的信息(name、ip)

cat /proc/net/dev

5. 修改网卡ip地址

不许用system()

四、驱动

1. 字符设备

编写一个最简单的字符设备驱动和应用程序,包含:read/write/ioctl,

一文带你掌握Linux字符设备架构

2. 通过等待队列实现读阻塞

手把手教Linux驱动9-等待队列waitq

3. 编写一个中断处理函数,包含设备树

4. 实现1个中断底半部(workqueue)

5. 基于内核定时器timer_list,实现定时1s执行某个函数

【粉丝问答20】内核定时器使用及其他时间操作

6. 使用内核信号量

五、工具篇

1. 版本管理

git

cmder

2. 安卓设备

adb、scrcpy

详解如何将 Android 手机投屏在 Ubuntu 上

3. 文本

source insight、vim、16进制分析工具、beyond compare

4. 画图工具

viso、edraw、

5. 串口工具

xshell、secure CRT、XCOM

6. 网络

  • 工具

wireshark,netassit,tcpdump

  • 命令

iperf、ping、tftp、ftp、ifcpnfig、ipconfig

7. 文件传输

  • 通常开发板和windows传输文件

tftp、adb、rz、sz

  • windows之间传输文件

飞秋、ftp、windows文件共享

8. 音频

aplay、arecord、ffplay

camera

v4l2-ctl、media-ctl -p、ffplay

9. i2c

i2cdetect、i2cdump、i2cget、i2cset、i2ctransfer

10. 仪器

逻辑分析仪、示波器、稳压电源、频谱仪、万用表

电烙铁

标签:转正,int,unsigned,员工,char,数组,串口,array,C语言
From: https://www.cnblogs.com/yikoulinux/p/18379497

相关文章

  • C语言初阶(四)字符函数和字符串函数
    字符分类函数C语言中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的这些函数的使用都需要包含⼀个头文件是ctype.h函数   如果他的参数符合下列条件就返回真iscntrl   任何控制字符isspace   空白字符:空格‘’,换页‘\f’,换行'\n......
  • C语言:函数递归
    目录一、递归1.1递归的思想1.2递归的限制二、递归举例2.1举例1:求n的阶乘 画图推演2.2举例2:顺序打印一个整数的每一位画图推演​编辑  三、递归和迭代一、递归   递归是学习C语言函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的方法,在C语......
  • 反汇编和汇编的区别 怎么用汇编让C语言更小
    在计算机编程的世界中,反汇编和汇编这两个概念往往令人感到深奥而神秘。究竟反汇编和汇编之间有何异同?这是程序员们经常探讨的话题。汇编语言作为一种底层编程语言,与计算机硬件密切相关,而反汇编则是将机器码还原为可读的汇编语言的过程。本文将深入研究反汇编和汇编的区别,帮助......
  • C语言函数介绍(上)
    函数概念库函数标准库和头文件库函数的使用方法头文件包含库函数文档的一般格式自定义函数函数的语法形式函数例子形参和实参实参形参实参和形参的关系return语句数组做函数参数函数概念数学中我们其实就见过函数的概念,比如:一次函数y=kx+b,k和b都是常数,给⼀个......
  • C语言--数据类型
    一、基本类型char、short int、int、longint、float、double(一)字符数据1、字符常量:直接常量:用单引号括起来,如:'a'、'c'、’1’等.转义字符:以反斜杠“\”开头,后跟一个或几个字符、如'\n','\t'等,分别代表换行、横向跳格.‘\\’表示的是\。2、字符变量:用char定义,每个......
  • (苍穹外卖)day02 员工管理 分类管理
    目录一.新增员工1.需求分析和设计2.代码开发3.功能测试4.代码完善二.员工的分页查询1.需求分析和设计2.代码开发3.功能测试与代码完善三.启用禁用员工账号 1.需求分析和设计 2.代码开发四.编辑员工1.需求分析和设计2.代码开发五.导入模块功能代码一.新......
  • 基于Java的C语言课程教学实践小程序的设计与实现(论文+源码)_kaic
    基于Java的C语言课程教学实践小程序的设计与实现摘 要在当前信息技术迅猛发展的大背景下,为了学生更好地利用信息技术学习C语言,急需开发一款C语言课程教学实践小程序。‎这个小程序可以让学生不再局限于课堂学习‎的教学模式,而是能够随时随地,不受时间、地点限制去学习‎。平......
  • C语言八股文(温故知新)
    1、volatile关键字volatileinti=10;intj=i;...intk=i;volatile告诉编译器i变量是随时可能发生变化的,例如IO端口的输入值,所以每次读取i都是从i的地址中读取,而不是,当重读读取i时发现读取变量一样,调用上次的寄存器。下面是volatile变量的几个例子:并行设备的硬件......
  • C语言字符数组
    字符数组是一维数组的一种,是当数组中的元素类型为字符型时,称为字符数组。在这里我想讲一下字符数组的结束标志和字符串数组的输入和输出。字符数组的结束标志在C语言中,使用字符数组保存字符串时,系统会自动添加“\0”作为结束符。chararray[]="hello";//初始化字符数组上......
  • 【C语言】进程和线程详解
    目录C语言进程和线程详解1.进程和线程的对比2.进程的基本概念2.1进程的定义2.2进程的特点2.3进程的生命周期3.进程管理3.1进程创建3.2进程间通信(IPC)3.2.1管道(Pipe)4.线程的基本概念4.1线程的定义4.2线程的特点5.POSIX线程库5.1引用头文件5.2创建线程......