连接两个 uint8_t 指针
Concatenation of two uint8_t pointer
我正在使用两个 uint8_t 指针
uint8_t *A_string = "hello"
uint8_t *B_string = "world"
我正在尝试使用 strcat
连接这两个
strcat(A_string, B_string);
我收到一条错误消息“uint8_t 与 char* 类型的参数不兼容 restrict”
所以我将 A_string 和 B_string 类型都转换为 char* 并尝试了。现在我没有收到错误,但没有发生连接。
任何人都可以告诉我如何合并两个 uint8_t * 类型的字符串吗?
A_string
指向不可修改的 string literal. However, the first argument of strcat
不能是指向字符串文字的指针 — 它必须是指向 可修改数组 的指针,此外,数组必须足够大以容纳串联的结果。
要解决此问题,请将 A_string
声明为足够大的数组。
此外,请注意编译器警告:您的代码中可能存在符号不匹配,这可能会导致问题。事实上,您可能想在这里使用 char
而不是 uint8_t
。
这是一个固定版本:
#include <stdio.h>
#include <string.h>
int main(void) {
// 11 = strlen("hello") + strlen("world") + 1
char a_string[11] = "hello";
char const *b_string = "world";
strcat(a_string, b_string);
printf("%s\n", a_string);
}
实际上你通常不会 hard-code 数组大小,因为如果你知道它,你也可以在源代码中自己连接字符串文字。
相反,您需要计算 所需的大小,并使用 malloc
:
动态分配足够大小的缓冲区
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char const *a_string = "hello";
char const *b_string = "world";
size_t total_len = strlen(a_string) + strlen(b_string) + 1;
char *result = malloc(total_len);
if (! result) {
fprintf(stderr, "Unable to allocate array of size %zu\n", total_len);
exit(1);
}
strcpy(result, a_string);
strcat(result, b_string);
printf("%s\n", result);
}
我正在使用两个 uint8_t 指针
uint8_t *A_string = "hello"
uint8_t *B_string = "world"
我正在尝试使用 strcat
连接这两个strcat(A_string, B_string);
我收到一条错误消息“uint8_t 与 char* 类型的参数不兼容 restrict”
所以我将 A_string 和 B_string 类型都转换为 char* 并尝试了。现在我没有收到错误,但没有发生连接。
任何人都可以告诉我如何合并两个 uint8_t * 类型的字符串吗?
A_string
指向不可修改的 string literal. However, the first argument of strcat
不能是指向字符串文字的指针 — 它必须是指向 可修改数组 的指针,此外,数组必须足够大以容纳串联的结果。
要解决此问题,请将 A_string
声明为足够大的数组。
此外,请注意编译器警告:您的代码中可能存在符号不匹配,这可能会导致问题。事实上,您可能想在这里使用 char
而不是 uint8_t
。
这是一个固定版本:
#include <stdio.h>
#include <string.h>
int main(void) {
// 11 = strlen("hello") + strlen("world") + 1
char a_string[11] = "hello";
char const *b_string = "world";
strcat(a_string, b_string);
printf("%s\n", a_string);
}
实际上你通常不会 hard-code 数组大小,因为如果你知道它,你也可以在源代码中自己连接字符串文字。
相反,您需要计算 所需的大小,并使用 malloc
:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char const *a_string = "hello";
char const *b_string = "world";
size_t total_len = strlen(a_string) + strlen(b_string) + 1;
char *result = malloc(total_len);
if (! result) {
fprintf(stderr, "Unable to allocate array of size %zu\n", total_len);
exit(1);
}
strcpy(result, a_string);
strcat(result, b_string);
printf("%s\n", result);
}