gpt4 book ai didi

c - Strcat 不断覆盖我的 char 数组?

转载 作者:行者123 更新时间:2023-11-30 15:33:49 25 4
gpt4 key购买 nike

buffeV 是这里的问题。当我 strcat 时,它被覆盖而不是附加。

char temper[12];char buffeV[12];char buffe[2];
if(version<10)
{
sprintf(temper,"/0%d",version);
strcpy(buffeV, temper);
}
if(version>=10)
{
sprintf(temper,"/%d",version);
strcpy(buffeV, temper);
}
printf(" BUFFEV: %s ",buffeV);
if(fileCount<10)
{
sprintf(buffe,"0%d",fileCount);
sprintf(temper,"/0%d/0000",fileCount);
strcat(buffeV,temper);
}
if(fileCount>=10)
{
sprintf(buffe,"%d",fileCount);
sprintf(temper,"/%d/0000",fileCount);
strcat(buffeV,temper);
}
printf(" BUFFEV: %s ",buffeV);

printf 显示 buffeV 是/03,然后是/03/0000,而它应该是/03/03/0000顺便说一句,它们并不总是相同的值,这就是它被分开的原因。我已经搞砸了很多次,但无法得到不同的结果。我还尝试专门声明“\0”的位置,看看是否可以解决问题,但仍然没有成功。这段代码有什么问题?谢谢

注意:version 和 fileCount 都是在其他地方声明的整数。但它们不是问题,代码实际上工作正常,直到我意识到我需要检查 fileCount 是否高于 10,这是当我最初只使用 sprintf 时必须添加 strcat 的时候

最佳答案

更简单的方法是让 sprintf 为您完成所有工作:

buffeV[100];
sprintf(buffeV, "/%02d/%02d/0000", version, fileCount);

这将自动将任何单个数字值填充为 0。这就是我认为您的代码正在尝试做的事情。

或更安全的版本:

buffeV[100];
snprintf(buffeV, 100, "/%02d/%02d/0000", version, fileCount);

关于c - Strcat 不断覆盖我的 char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23569798/

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