我目前正在尝试在两个unsigned char上使用strcat,但我一直收到警告。这是我对strcat的看法:
unsigned char A[100],B[100];
A[0] = '1';
B[0] = '2';
strcat(A,B);
我试图把它们放在一起,这样我就得到了A作为两者的组合。有什么建议?
答案 0 :(得分:4)
strcpy(A,"1");
strcpy(B,"2");
strcat((char *)A,(char *)B);
您只是初始化数组中的第一个字符而不是char array
否则你可以
char A[100] = "";
char B[100] = "";
以后你可以
char A[0] = '1';
char B[0] = '2';
strcat()protoype是
char *strcat(char *dest, const char *src)
所以传递的类型应该是char *
答案 1 :(得分:3)
警告是因为您将unsigned char*
传递给了char*
的函数。
如果要复制unsigned char,则应使用memcpy
。
#include <string.h>
int main(){
unsigned char A[100],B[100];
A[0] = '1';
B[0] = '2';
memcpy(A + 1, B, 1);
return 0;
}
答案 2 :(得分:1)
你可以做这样的事情
#include <stdio.h>
unsigned char* ustrcat(unsigned char *dest, const unsigned char *src) {
unsigned int length_1 = 0;
unsigned int length_2 = 0;
// find the end of the first unsigned char string
for (; dest[length_1] != '\0'; length_1++);
//input unsigned chars into the string from that position to the end
for (; src[length_2] != '\0'; length_2++)
dest[length_1+length_2] = src[length_2];
// place a NULL terminating character at the end
dest[length_1+length_2] = '\0';
return dest;
}
int main(){
unsigned char A[100] = "",B[100] = "";
A[0] = '1';
B[0] = '2';
ustrcat(A,B);
printf("%s\n", A);
return 0;
}
基本上我只是重写了unsigned char type
的strcat函数答案 3 :(得分:0)
char
,signed char
和unsigned char
是三种不同的类型。这意味着您无法将unsigned char *
传递给期望char *
而无需投射的函数。要么改为简单的char
:
char A[100], B[100];
或在strcat()
来电中添加演员:
strcat((char *)A, (char *)B);
另外 - 不要忘记空终止这些字符串!
A[1] = 0;
B[1] = 0;
答案 4 :(得分:-1)
unsigned char A[100]={0}, B[100]={0}; // initialize the array to end the strings
A[0] = '1'; // initialize the two strings
B[0] = '2';
strcat(A,B); // and simply copy them