forked from gary/ems
2
0
Fork 0
sun_ems/ems_c/kernel/kit_string.c

137 lines
4.9 KiB
C
Raw Permalink Normal View History

2025-05-13 17:49:49 +08:00
/*****************************************************************************
* @copyright 2024-202, . POWER SUPPLY CO., LTD.
* @file xxx.c
* @brief xxxx
* @author xx
* @date 2024/08/30
* @remark
*****************************************************************************/
#include "kit_string.h"
/*****************************************************************************
* @brief NULL 0
* @param[in] str:
* @return NULL 0 0
*****************************************************************************/
int kit_atoi(char *str)
{
// 检查输入字符串是否为 NULL
if (str == NULL)
{
return 0;
}
// 检查字符串是否为空(长度为 0
else if (strlen(str) == 0)
{
return 0;
}
else
{
// 使用标准库函数 atoi 进行字符串到整数的转换
return atoi(str);
}
}
/*****************************************************************************
* @brief
* @param[in] str:
* @return
*****************************************************************************/
void kit_trim_right(char *str)
{
// 找到字符串末尾,并向左检查无效字符
char *end = str + strlen(str) - 1;
while (end > str && ((unsigned char)(*end) == ' ' || *end == '\r' || *end == '\n' || *end == '\t')) {
end--;
}
// 在去除右侧无效字符后,添加字符串终止符 '\0'
*(end + 1) = '\0';
}
/*****************************************************************************
* @brief
* @param[in] str:
* @return
*****************************************************************************/
void kit_trim_left(char *str)
{
// 找到字符串左侧的第一个有效字符
char *start = str;
while (*start && ((unsigned char)(*start) == ' ' || *start == '\r' || *start == '\n' || *start == '\t')) {
start++;
}
// 将有效部分的字符串移动到开头
memmove(str, start, strlen(start) + 1);
}
/*****************************************************************************
* @brief
* @param[in] str:
* @return
*****************************************************************************/
void kit_trim_sides(char *str)
{
// 处理空指针和空字符串的情况
if (str == NULL || *str == '\0') {
return;
}
// 从左侧移除无效字符(空格、回车、换行符、制表符)
char *start = str;
while (*start && ((unsigned char)(*start) == ' ' || *start == '\r' || *start == '\n' || *start == '\t')) {
start++;
}
// 如果整个字符串都是无效字符,则返回空字符串
if (*start == '\0') {
str[0] = '\0';
return;
}
// 将有效字符部分移到字符串的开头
memmove(str, start, strlen(start) + 1);
// 从右侧移除无效字符
char *end = str + strlen(str) - 1;
while (end > str && ((unsigned char)(*end) == ' ' || *end == '\r' || *end == '\n' || *end == '\t')) {
end--;
}
// 在右侧无效字符之后添加字符串终止符
*(end + 1) = '\0';
}
/*****************************************************************************
* @brief separator分隔
* @param[in] count:
* @param[in] texts:
* @param[in] separator:
* @return
*****************************************************************************/
char* kit_join_text(int count, const char** texts, const char* separator)
{
if (count == 0) return NULL;
size_t len = 0;
for (int i = 0; i < count; i++) {
len += strlen(texts[i]);
if (i < count - 1) {
len += strlen(separator);
}
}
char* result = (char*)malloc(len + 1); // 分配内存
if (!result) return NULL;
strcpy(result, texts[0]);
for (int i = 1; i < count; i++) {
strcat(result, separator);
strcat(result, texts[i]);
}
return result;
}