gpt4 book ai didi

c - 我正在尝试递增 C 字符数组中的值,但它一直失败 - 求助?

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

这是我的函数代码:

char * increment_b_string(char * b_string)
{
char * ret_string = (char *) malloc(7);

ret_string = "001aaa";

if (*(b_string + 2) == '9')
{
*(ret_string +2) == '0';

if (*(b_string + 1) == '9')
{
*(ret_string +1) = '0';
*(ret_string) = *(b_string) + 1;
} else {
*(ret_string + 1) = *(b_string + 1) + 1;
}
} else {
*(ret_string + 2) = *(b_string + 2) + 1;
}

return ret_string;
}

关于它可能失败的原因有什么想法吗?

一般的想法是 b_string 将包含像“123aaa”这样的值。 “aaa”部分无关紧要,永远不会改变。只有前 3 个数字会。它们需要像整数一样递增。开头需要保留前导零。所以,如果输入是“004aaa”,输出应该是“005aaa”。这只需要达到“300aaa”,因此我不考虑更多的东西。这是一项学校编程作业,因此问题的性质非常人为。

谢谢。

编辑:我改变了我的功能。这是现在的样子。

void increment_b_string(char * b_string)
{
if (b_string[2] == '9')
{
b_string[2] == '0';

if (b_string[1] == '9')
{
b_string[1] = '0';
b_string[0] += 1;
} else {
b_string[1] += 1;
}
} else {
b_string[2] += 1;
}
}

假设 b_string 最初填充有...

strcpy(b_string, "001aaa");

...这是正确的吗?我的程序仍然表现出相同的行为,但这可能是代码中其他地方的错误。

最佳答案

您不能递增或更改字符串文字 - 它们在 C 中是只读的,这正是您正在做的。

char * ret_string = (char *) malloc(7);
ret_string = "001aaa";

没有按照您的想法去做,它没有将字符串复制到ret_string 指向的分配空间中,而是将ret_string 设置为指向字符串文字“001aaa”。改用这个:

 char * ret_string = (char *) malloc(7);
strcpy(ret_string,"001aaa");

关于c - 我正在尝试递增 C 字符数组中的值,但它一直失败 - 求助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505507/

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