Strcat中的两个unsigned char

时间:2015-02-03 05:01:07

标签: c string

我目前正在尝试在两个unsigned char上使用strcat,但我一直收到警告。这是我对strcat的看法:

unsigned char A[100],B[100];
A[0] = '1';
B[0] = '2';
strcat(A,B);

我试图把它们放在一起,这样我就得到了A作为两者的组合。有什么建议?

5 个答案:

答案 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)

charsigned charunsigned 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