整形數(shù)組如何轉(zhuǎn)換成一個(gè)字符串?
總的來說,有兩種思路。
思路一
uint8_t str[10] = {0};
int arr[] = {1,2,3,4,5,6};
sprintf(str,"%d%d%d%d%d%d",arr[0],arr[1],arr[2],arr[3],arr[4],arr[5]);
printf(str);
這種想法非常局限,是直接使用sprintf(),怎么改進(jìn)呢?用循環(huán)。
思路二
uint8_t str[10] = {0};
int arr[] = {1,2,3,4,5,6};
for(uint8_t i = 0; i < (sizeof(arr) / sizeof(arr[0])); i++)
{
sprintf((str + strlen(str)),"%d",arr[i]);
}
這個(gè)循環(huán)的方式非常巧妙,利用strlen()作為不斷增加的變化量,而當(dāng)str賦初值都是0的時(shí)候,這些零對(duì)于字符串來說,相當(dāng)于\0,那么此時(shí)strlen檢測(cè)出來的數(shù)量必然是0,這是一種需要記住的方式。
普通的數(shù)字怎么轉(zhuǎn)化成字符串?
直接使用sprintf()就好了。
uint8_t str[10] = {0};
int num = 25635;
sprintf(str,"%d",num);
printf(str);
有關(guān)于字符串常用的兩個(gè)函數(shù)
strstr()
這個(gè)函數(shù)主要是看在一個(gè)第一個(gè)參數(shù)字符串中,是否有第二個(gè)參數(shù)字符存在。如果存在的話,那么就返回第二個(gè)參數(shù)字符在第一個(gè)參數(shù)字符串的數(shù)組下標(biāo)。
這個(gè)函數(shù)一般來確定有沒有某一個(gè)字符或者字符串是存在于第一個(gè)字符串之中的。
strstr是一個(gè)C語(yǔ)言的字符串處理函數(shù),用于在一個(gè)字符串中查找指定子字符串的第一次出現(xiàn)位置。
該函數(shù)的原型如下:
c
char *strstr(const char *haystack, const char *needle);
haystack:要搜索的字符串,即被查找的源字符串。
needle:要查找的子字符串。
strstr函數(shù)會(huì)在 haystack 字符串中查找第一次出現(xiàn)的 needle 子字符串,
并返回該子字符串在 haystack 中的指針。如果未找到匹配的子字符串,則返回NULL。
以下是一個(gè)使用strstr函數(shù)的示例:
c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
char *result = strstr(str, "World");
if (result != NULL) {
printf("Found at index: %ld\n", result - str);
} else {
printf("Not found\n");
}
return 0;
}
strtok()
這個(gè)函數(shù)的主要作用是返回字符串中某一個(gè)字符之前的字符串的地址。相當(dāng)于將前面的字符串切割了下來。
不過值得注意的是:其中的字符串一定要是字符數(shù)組。不能是字符串,否則操作會(huì)卡住。一定要是直接的數(shù)組,不能是數(shù)組當(dāng)做一個(gè)*str參數(shù)傳進(jìn)來,這樣的話數(shù)組就改變了性質(zhì),這樣也會(huì)出現(xiàn)問題。
strtok是字符串處理函數(shù),它的名稱來自于 "string tokenization" 的縮寫。
在C語(yǔ)言中,strtok函數(shù)用于將一個(gè)字符串分割成多個(gè)子字符串(tokens),并逐個(gè)返回這些子字符串。它可以根據(jù)指定的分隔符將原始字符串切割成多個(gè)部分。
strtok函數(shù)的原型如下:
c
char *strtok(char *str, const char *delim);
str:要分割的字符串,第一次調(diào)用時(shí)傳入非空指針,后續(xù)調(diào)用傳入NULL。
delim:分隔符字符串,用于指定分割子字符串的標(biāo)志。
strtok函數(shù)首次調(diào)用時(shí),會(huì)在給定的字符串中找到第一個(gè)分隔符之前的子字符串,并返回該子字符串的指針。之后的調(diào)用通過傳入NULL作為第一個(gè)參數(shù),可以繼續(xù)返回后續(xù)的子字符串,直到?jīng)]有更多的子字符串可供返回。
以下是一個(gè)使用strtok函數(shù)的示例:
c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello,World,Welcome";
char *token = strtok(str, ",");
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ",");
}
return 0;
}
第一次傳入一個(gè)非空的指針,后續(xù)就直接傳入NULL就可以了。文章來源:http://www.zghlxwxcb.cn/news/detail-796138.html
關(guān)于一些字符串的格式化字符
%hhu表示的是無(wú)符號(hào)的char,而其中%hu表示的是無(wú)符號(hào)的short,%u就是表示無(wú)符號(hào)的int。文章來源地址http://www.zghlxwxcb.cn/news/detail-796138.html
到了這里,關(guān)于字符串和整型轉(zhuǎn)換的那些事兒的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!