gpt4 book ai didi

将字符复制到字符*

转载 作者:行者123 更新时间:2023-11-30 19:24:09 24 4
gpt4 key购买 nike

我有一个关于 C 编程的问题。我有一个循环,在每次迭代时生成一个新字符。我想将每个生成的字符附加到字符串(char *)这是我的代码:

char *string[20];
string[0]=0;

for (p = 0; p < length(message) - 1; p = p + 2)
{
...
char cc="";
cc = (char) strtol(pp, pp, 16);
char *tt[2];
tt[0]="";
*tt=(char *)cc;
strcat(string,cc);
}

我知道 strcat 使用 char*。所以我尝试复制我想要附加到新指针的字符的内容。我可能做错了……我经验不足。谢谢

strtol 的原因:我有一个 char* 消息,其中包含一个十六进制数字。我想处理该十六进制数,但是当我尝试执行例如移位 (<<16) 时,会将十六进制字符的十进制 ascii 值移位 16 位(乘以 2^16 ),而不是移位字符本身。因此,我将十六进制数字转换为字符,这样当我尝试进行移位时,它将移位正确的值。我知道这很奇怪。你能帮我想出更好的办法吗?

unsigned char *octets0"3F214365876616AB15387D5D59";
crc ^= ((*octets++) << 16);

最佳答案

几个问题。

第一个问题是您创建了一个 char 指针数组,而不是 char 数组。你想要:

char string[20];

在 C 中,数组隐式“降级”为指向其第一个元素的指针,因此如果您仅传递 string,它就是一个 char* ( string = = &string[0] )

从那里...不知道 pp 是什么,但是 strtol() 返回一个您要分配的 long intchar - 这不会像你想象的那样工作。你少了大约7个字节。

(编辑为“工作”定义为“不是你所想的”)

关于将字符复制到字符*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7316414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com