gpt4 book ai didi

c - 将 int 数组附加到 c : 中的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:05 25 4
gpt4 key购买 nike

我正在尝试将一个整数数组附加到一个字符串中,基本上我是在尝试将其转换为以下格式:A :123456 其中 A 是一个字符,由参数给出,而 123456 是一个整数数组.我在运行代码时遇到了一个总线错误,我在这里和谷歌上搜索了正确的方法来做一些类似于我一直希望实现的事情,但是示例与此没有直接关系,所以我想知道我是否可以获得一些帮助。提前致谢

char *print_cards_played(Player *player) {
char *result = "";
int i = 0;

result += sprintf(result, "%c :", player->playerID);

while(player->cardsPlayed[i] != 0) {
result += sprintf(result, "%d", player->cardsPlayed[i]);
i++;
}

result += sprintf(result, "\n");

return result;
}

最佳答案

您不能“追加”到由以下定义的字符串:

char *result = "";

所有为您提供的是一个名为 result 的指针,它指向内存中的一个只读位置,其中字符 '\0'(字符串终止符)是存储。你不能写信给它。

您需要有一个合适大小的实际缓冲区:

char *result = malloc(128);

如果分配成功,您将拥有所谓的“堆缓冲区”,即使执行分配的函数退出,它也会保留。您可以安全地返回此指针,这与局部数组不同,局部数组会在函数退出时消失。

那你可以用sprintf(),当然不能用+=,你不能在C中添加字符串。最好的解决办法可能是sprintf() 到一个临时的小字符串,然后 strcat() 那个字符串到 result。您可以跟踪附加长度以加快速度,但这对于现代机器上的小问题并不重要。

关于c - 将 int 数组附加到 c : 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26017937/

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