gpt4 book ai didi

在 C 中连接 LPSTR

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

尽可能使用基本的 C 来构建一个随机顺序从 1 到 52 的数字列表(一副纸牌)。一切正常,但我所有连接字符串并获得结果的尝试都以失败告终。有什么建议么?注意:这不是家庭作业,而是我用来创建游戏的东西。

// Locals
char result[200] = ""; // Result
int card[52]; // Array of cards
srand(time(0)); // Initialize seed "randomly"

// Build
for (int i=0; i<52; i++) {
card[i] = i; // fill the array in order
}

// Shuffle cards
for (int i=0; i<(52-1); i++) {
int r = i + (rand() % (52-i));
int temp = card[i]; card[i] = card[r]; card[r] = temp;
}

// Build result
for (int c=0; c<52; c++) {

// Build
sprintf(result, "%s%d", result, card[c]);

// Comma?
if ( c < 51 )
{
sprintf(result, "%s%s", result, ",");
}
}

我的最终结果总是乱码。感谢您的帮助。

最佳答案

你一直写到“结果”的同一个位置。

sprintf 不会为您执行附加操作。

您可能会考虑,在每个sprintf 之后,获取返回值(即写入的字符数),并递增指向结果缓冲区的指针。即类似的东西:

(伪代码):

char result[200];
char * outputPtr = result;

for (int c=0; c<52; c++) {

// Build
int n = sprintf(outputPtr, "%d%s", card[c], (c<51 ? "," : ""));
outputPtr += n;
}

关于在 C 中连接 LPSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8198825/

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