JZsdk_string.c
3.7 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <stdio.h>
#include "JZsdk_string.h"
#include "../../JZsdkLib.h"
/*
* 用于字符串转int型
*/
int JZsdk_String_str_to_int(const char *str)
{
int temp = 0;
const char *ptr = str; //ptr保存str字符串开头
if (*str == '-' || *str == '+') //如果第一个字符是正负号,
{ //则移到下一个字符
str++;
}
while(*str != 0)
{
if ((*str < '0') || (*str > '9')) //如果当前字符不是数字
{ //则退出循环
break;
}
temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
str++; //移到下一个字符
}
if (*ptr == '-') //如果字符串是以“-”开头,则转换成其相反数
{
temp = -temp;
}
return temp;
}
/*
* int型转字符串
*/
void JZsdk_String_int_to_str(int n, char *str)
{
char buf[10] = "";
int i = 0;
int len = 0;
int temp = n < 0 ? -n: n; // temp为n的绝对值
if (str == NULL)
{
return;
}
while(temp)
{
buf[i++] = (temp % 10) + '0'; //把temp的每一位上的数存入buf
temp = temp / 10;
}
len = n < 0 ? ++i: i; //如果n是负数,则多需要一位来存储负号
str[i] = 0; //末尾是结束符0
while(1)
{
i--;
if (buf[len-i-1] ==0)
{
break;
}
str[i] = buf[len-i-1]; //把buf数组里的字符拷到字符串
}
if (i == 0 )
{
str[i] = '-'; //如果是负数,添加一个负号
}
}
/*
* longlong型转字符串型
*/
size_t JZsdk_String_longlong_to_str(char *s, long long value,int radix)
{
char *p, aux;
unsigned long long v;
size_t l;
/* Generate the string representation, this method produces
* an reversed string. */
v = (value < 0) ? -value : value;
p = s;
do {
*p++ = '0' + (v % radix); // 2
v /= radix; // 2
} while (v);
if (value < 0) *p++ = '-';
/* Compute length and add null term. */
l = p - s;
*p = '\0';
/* Reverse the string. */
p--;
while (s < p) {
aux = *s;
*s = *p;
*p = aux;
s++;
p--;
}
return l;
}
/****************
*
* 用于判断数组是否为空
* 不为空 JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE
* 空 JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
* ***********/
T_JZsdkReturnCode JZsdk_Array_isEmpty(unsigned char array[], int size)
{
for (int i = 0; i < size; i++) {
if (array[i] != 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; // 数组不为空
}
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; // 数组为空
}
/****************
*
* 用于替换数组中的换行符'\n'为结束符'\0'
*
* 替换成功返回 JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
* 没有替换 返回JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE
* ***********/
T_JZsdkReturnCode JZsdk_replace_newlines_with_null_terminator(char* string)
{
int replace_flag = JZ_FLAGCODE_OFF;
// 获取字符串的长度
int length = strlen(string);
// 遍历字符串,将换行符替换为结束符
for (int i = 0; i < length; i++) {
if (string[i] == '\n') {
string[i] = '\0';
replace_flag = JZ_FLAGCODE_ON;
}
}
if (replace_flag == JZ_FLAGCODE_ON)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
else
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}