簡體   English   中英

Strcat中的兩個unsigned char

[英]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函數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM