[英]Strcat two unsigned char in C
我目前正在嘗試在兩個unsigned char上使用strcat,但我一直在收到警告。 這是我對strcat的看法:
unsigned char A[100],B[100];
A[0] = '1';
B[0] = '2';
strcat(A,B);
我試圖把它們放在一起,以便我得到A作為它們兩者的組合。 有什么建議?
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 *
警告是因為您將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;
}
你可以這樣做
#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類型重寫了strcat函數
char
, signed char
和unsigned char
是三種不同的類型。 這意味着你不能將unsigned char *
傳遞給期望沒有強制轉換的char *
的函數。 要么改為簡單的char
:
char A[100], B[100];
或者在strcat()
調用中添加強制轉換:
strcat((char *)A, (char *)B);
另外 - 不要忘記null終止這些字符串!
A[1] = 0;
B[1] = 0;
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.