gpt4 book ai didi

c - 如何使用C语言替换字符串的最后一个索引?

转载 作者:行者123 更新时间:2023-11-30 17:34:18 25 4
gpt4 key购买 nike

下面的代码尝试增加字符串中的最后一个索引,例如:如果 label = "1_1_9",find_next_label (label ) 将返回 "1_1_10"。

这有效。但是,我也想更改原始标签,并增加它。例如:如果 label = "1_1_9",find_next_label(label) 将返回 "1_1_10",在此过程中,label 也将变为 "1_1_10"。

下面的代码无法执行此操作。 main() 函数的结果显示标签仍然是“1_1_9”。

谁能帮忙看看问题出在哪里吗?

char * find_next_lable(char * label)
{
int length = strlen(label);

char * last_index = label + length - 1;
int num = atoi(last_index);
num = num + 1;

char * next_lable = malloc(sizeof(label));
strncpy(next_label, label, length-1);

*(next_label + length - 1) = '\0';
sprintf(next_label, "%s%d", next_label, num);

label = next_label;

return label;
}

int main()
{
char * s = malloc(6);

strcpy(s, "1_1_9");
char * n = find_next_label(s);

printf("%s\n", s);
printf("%s\n", n);

return 0;
}

最佳答案

last_index()atoi() 代码块假定最终数字只有一位数字长;显然这不是很普遍。您可以改为搜索最后一个下划线,然后将其后面的字符转换为数字。使用 strrchr() 查找最后一个下划线。

此外,您必须充分考虑缓冲区大小和溢出,您可能应该让函数接受可用缓冲区大小作为附加参数,特别是如果您想修改输入。如果您想要这样,当然也没有必要分配额外的空间,只需返回输入即可。

关于c - 如何使用C语言替换字符串的最后一个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23422909/

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