C-字符串函数

1、int strlen(char * str);求字符串长度函数,返回值为无符号整形,不算入字符\0,

size_t strlen (const char* str);

无符号整形-无符号整形 = 无符号整型;

2、char* strcpy(char* dest,char* source);字符串copy函数,包含\0,遇\0终止,目标空间可修改且足够大,源字符串需包含\0;

char* strcpy(char* dest,const char* source);

3、char* strcat(char* str1,const char* str2);在str1拼接str2

char* strcat(char* str1,const char* str2);

str1空间需足够大,且可修改,str2需包含\0;

4、int strcmp(const char* str1,const char* str2);字符串比较函数,比较的是字符串每一位的arcII码

返回值:str1 < str2,return <0;str1 == str2,return =0;str1 > str2,return >0;

int strcmp(const char* str1,const char* str2);

strcpy,strcmp,strcat,这三个函数为长度不受限的字符串函数,不安全

strncpy,strncmp,strncat,这三个是长度受限的字符串函数,相对安全

5、char* strncpy(char* dest, const char* src, size_t num);num需要复制几个字符,

char* strncpy(char* dest, const char* src, size_t num);
//num > sizeof(src) , 不够的用\0填充
//num < sizeof(src),按位复制

6、char* strncat(char* dest, const char* src, size_t num);追加几个字符到dest后面

char* strncat(char* dest, const char* src, size_t num);
//num > sizeof(src) , 不够的不会用\0填充
//num < sizeof(src),按位复制

7、char* strncmp(char* dest, const char* src, size_t num);比较前num位字符

char* strncmp(char* dest, const char* src, size_t num)

8、char* strstr(const char* str1, const char* str2);查找子串

返回值:子串str2在str1中的起始地址,找不到返回NULL

const char* strstr(const char* str1, const char* str2);

9、char* strtok(char* str, const char* sep);分割字符串,sep分割符集合

char* strtok(char* str, const char* sep);

char str[] = "yyy110@163.com";
char sep[] = "@.";
char* rst = strtok(str,sep);
print("%s\n",rst); //yyy110
char* rst = strtok(NULL,sep);
print("%s\n",rst); //163
char* rst = strtok(NULL,sep);
print("%s\n",rst); //com

strtok会在str中找sep分隔符,并在str中修改分割符为\0,并返回\0之前串的起始地址。下一次调用参数会传NULL,但是strtok会记录上一次分割符的地址,并从上一次分隔符的后一位地址开始遍历

如果传入的串为NULL,则返回NULL;

10、char* strerror(int errnum);必须包含头文件<errno.h>,返回错误码对应的错误信息的字符串的首地址

char* strerror(int errnum);

C语言中头文件errno.h会有一个变量int errno;会记录错误码,char* strtok(int errno)会依据errno的值返回对应的字符串错误信息。

11、字符分类函数

字符分类函数是一组在C语言(以及支持类似函数的其他编程语言)中用于判断字符类型的函数。这些函数主要定义在<ctype.h>头文件中。这些函数通过对输入的字符进行测试,并返回一个整型值来表示该字符是否属于特定的类别。虽然标准并未指定返回的特定非零值,但通常情况下,如果字符属于该类别,则返回非零值(如1),否则返回0。

iscntrl(int c):检查字符是否为控制字符。控制字符是ASCII码在0到31之间(包括DEL字符)的字符。

isspace(int c):检查字符是否为空白字符。空白字符包括空格、制表符、换行符等。

isdigit(int c):检查字符是否为数字字符('0'到'9')

isxdigit(int c):检查字符是否为十六进制数字字符('0'到'9'、'A'到'F'、'a'到'f')。

islower(int c):检查字符是否为小写字母('a'到'z')。

isupper(int c):检查字符是否为大写字母('A'到'Z')。

isalpha(int c):检查字符是否为字母('a'到'z'或'A'到'Z')。

isalnum(int c):检查字符是否为字母或数字('0'到'9'、'a'到'z'、'A'到'Z')。

ispunct(int c):检查字符是否为标点符号(逗号、句号、问号等,但不包括空格、制表符等空白字符)。

isgraph(int c):检查字符是否为可打印的非空白字符(即除空白字符外的任何可打印字符)。

isprint(int c):检查字符是否为可打印字符,包括字母、数字、空格、标点符号等,但不包括控制字符。
12、字符转换函数

  1. int tolower(int c) - 大写转换成小写
  2. int toupper(int c) - 小写转换成大写

ESP32-S3在STA模式下设置静态IP通常涉及到配置网络接口的接口配置结构体,比如`esp_netif_t`。以下是一个基本步骤: 1. 首先,你需要在你的应用程序初始化阶段包含必要的头文件,如`esp_wifi.h`和`esp_netif.h`。 ```c #include "esp_wifi.h" #include "esp_netif.h" ``` 2. 定义你的静态IP、子网掩码、默认网关和DNS服务器地址。例如: ```c static const char* ssid = "your_SSID"; static const char* password = "your_PASSWORD"; static ip4_addr_t static_ip = { IP4_ADDR(192, 168, 1, 100) }; // 你的静态IP static ip4_addr_t subnet_mask = { IP4_ADDR(255, 255, 255, 0) }; static ip4_addr_t gateway = { IP4_ADDR(192, 168, 1, 1) }; static ip4_addr_t dns_server = { IP4_ADDR(8, 8, 8, 8)}; // 示例DNS服务器地址 ``` 3. 初始化WiFi模块,并连接到指定的SSID: ```c esp_err_t ret = esp_wifi_init(); if (ret == ESP_OK) { wifi_config_t wifi_config = { .sta = { .ssid = ssid, .password = password, .bssid_set = false, // 如果你知道AP的BSSID可以设置为true }, }; ret = esp_wifi_set_mode(WIFI_MODE_STA); if (ret == ESP_OK) { ret = esp_wifi_start(); if (ret == ESP_OK) { // 等待WiFi连接成功 while (!esp_wifi_get_connect_status() == WIFI_STATUS_CONNECTED) { vTaskDelay(pdMS_TO_TICKS(500)); } } } // 连接成功后再配置静态IP } ``` 4. 创建并配置静态IP网络接口: ```c esp_netif_create StaIf, NULL, &espnetif sta_if; if (esp_netif_create_data斯塔If(&sta_if)) { esp_netif_set_ip4(&sta_if, &static_ip, &subnet_mask, &gateway); esp_netif_set_dhcp_client_data(&sta_if, NULL); // 关闭DHCP服务,使用静态IP esp_netif_set_dns_server_num(&sta_if, 1, &dns_server); esp_netif_start(&sta_if); } // 然后你可以开始发送和接收数据包了 ``` 记得检查错误代码`esp_err_t`,处理可能出现的问题。此外,如果ESP32-S3需要访问互联网,你还可能需要配置路由器的端口转发规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值