gpt4 book ai didi

在 C 中创建 "1,2,3,4,5"形式的字符串

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

我在生成“1,2,3,4,5”形式的字符串以传递给命令行程序时遇到困难。

这是我尝试过的:

int N=100;
char list[200];
for (i=0; i<2*N; i+=2) {
char tmp;
sprintf(tmp,'%d', i);
strcpy(list[i], tmp);
strcpy(list[i+1], ',');
}

编辑:我不觉得这个问题是重复的,因为它更多的是将字符串附加到列表中并管理该内存,而不是仅仅在整数之间放置一个逗号。

最佳答案

下面的代码将完成您所需要的。

#include <stdlib.h>
#include <stdio.h>

char* CommaSeparatedListOfIntegers(const int N)
{
if (N < 1)
return NULL;
char* result = malloc(1 + N*snprintf(NULL, 0, "%d,", N));
char* p = result;
for (int i = 1; i <= N; i++)
p += sprintf(p, "%d,", i);
*(p-1) = '\0';
return result;
}

请注意,该函数返回一个堆分配的内存块,调用者负责清理。

一些注意事项:

  • 当转换为文本时,我们对每个数字的长度设置了粗略的上限。这确实意味着我们将过度分配内存块,但不会大量分配。如果这对您来说是个问题,那么您可以编码更准确的长度。这将涉及从 1N 的循环,并为每个值调用 snprintf 以确定所需的长度。
  • 请注意,我们最初在最终值后写了一个逗号,但随后将其替换为空终止符。

关于在 C 中创建 "1,2,3,4,5"形式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23652321/

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