一、代码
1.在string.h中写函数声明
#ifndef __STRING_H__
#define __STRING_H__
int strcmp(const char *s1, const char *s2);
#endif
//s1表示一个字符串
//s2表示第二个字符串
//返回值:s1 = s2 返回 0
s1 > s2 返回 一个大于0的数
s1 < s2 返回 一个小于0的数
//为什么用const修饰?
变量里的数据只能被访问,而不能被修改
#include "string.h"
int strcmp(const char *s1, const char *s2)
{
while (*s1 != '\0')
{
if (*s1 != *s2)
{
return (*s1 - *s2);
}
s1++;
s2++;
}
return (*s1 - *s2);
}
//判断s1是否到结尾\0(如果没有到结尾那么就俩个字符串进行比较)
//如果判断不相等
//那么返回
//如果判断相等
//那么判断下一个字符s1++,s2++
//判断s1已经到结尾了,还没有比较出来,那么返回差值
二、可以应用于ARM点灯,输入led1on,通过字符串比较的函数,点亮相应的灯,在command.c中还应该有以下代码
#include "command.h"
#include "string.h"
#define NUM 2
command_t cmd_arr[NUM] = {
[0] = {
.cmd_str = "led1on",
.gpios = GPIOE, //调用组
.pins = GPIO_PIN_10, //引脚
.state = GPIO_SEF, //引脚的输出状态
.hal_gpio_write_p = hal_gpio_write, //调用函数
},
[1] = {
.cmd_str = "led1off",
.gpios = GPIOE, //调用组
.pins = GPIO_PIN_10, //引脚
.state = GPIO_RESEF, //引脚的输出状态
.hal_gpio_write_p = hal_gpio_write, //调用函数
}
};
command_t * find_command(const char *uart_str)
{
unsigned int i;
for (i = 0; i < NUM; i++)
{
if(!strcmp(uart_str, cmd_arr[i].cmd_str))
{
return &cmd_arr[i];
}
}
return 0;
}
三、需要强调的是结构体变量初始化的方式
//初始化一个结构体变量
//结构体变量初始化方式1
comand_t cmd_arr = {"led1on",GPIOE,FPIO_PIN_10,GPIP_SET,hal_gpio_write};
//结构体变量初始化方式2
cmd_arr.cmd_str = "led1on";
cmd_arr.gpios = GPIOE;
cmd_arr.pins = GPIO_PIN_10;
cmd_arr.hal_gpio_write_p = hal_gpio_write;
//结构体变量初始化方式3
command_t cmd_arr = {
.cmd_str = "led1on";
.gpios = GPIOE;
.pins = GPIO_PIN_10;
.hal_gpio_write_p = hal_gpio_write;
};
//初始化俩个结构体变量
//方式1
command_t cmd_arr[2] = {
{"led1on",GPIOE,GPIO_PIN_10,GPIO_SET,hal_gpio_write},
{"led1off",GPIOE,GPIO_PIN_10,GPIO_RESET,hal_gpio_write}
};
//方式2
cmd_arr[0].cmd_str = "led1on";
cmd_arr[0].gpios = GPIOE;
cmd_arr[0].pins = GPIO_PIN_10;
cmd_arr[0].state = GPIO_SET;
cmd_arr[0].hal_gpio_write_p = hal_gpio_write;
cmd_arr[1].cmd_str = "led1off";
cmd_arr[1].gpios = GPIOE;
cmd_arr[1].pins = GPIO_PIN_10;
cmd_arr[1].state = GPIO_RESET;
cmd_arr[1].hal_gpio_write_p = hal_gpio_write;
//方式3
command_t cmd_arr[NUM] = {
[0] = {
.cmd_str = "led1on",
.gpios = GPIOE,
.pins = GPIO_PIN_10,
.state = GPIO_SET,
.hal_gpio_write_p = hal_gpio_write,
},
[1] = {
.cmd_str = "led1off",
.gpios = GPIOE,
.pins = GPIO_PIN_10,
.state = GPIO_RESET,
.hal_gpio_write_p = hal_gpio_write,
}
};