gpt4 book ai didi

C - 连接字符串的所有头部

转载 作者:行者123 更新时间:2023-12-04 02:51:06 25 4
gpt4 key购买 nike

好的,最近的一个测验条目要求学生编写一个方法“longhead”(char *longhead),该方法将返回一个字符串,该字符串由给定字符串中所有头部的串联组成。示例:

char *string = "this";
printf("%s\n", longhead(string));

输出:tththithis

我确实想出了一个解决方案,但它只适用于数组,而且它在 main 方法中。我一直在尝试真正在指针上站稳脚跟,我觉得通过重复这些测验问题我一定会到达正确的地方。

有解决办法吗?或者...可以只使用“strlen”来完成吗?

更新:

这是我编写的解决方案,它只适用于 char 数组,并且在 main 方法中:

char *toPrint = "roses";
int i, j = strlen(toPrint);
char toPrintArray[j];
for(i = 0; *toPrint != 0; toPrint++, i++){
toPrintArray[i] = *toPrint;
}
int k;
for(i = 0; i < j; i++){
for(k = 0; k < i; k++)
printf("%c", toPrintArray[k]);
}

最佳答案

所需字符串的长度(当输入的长度为 N 时)是 (N * (N+1))/2(1 到 N 的整数之和,有时称为“高斯的公式”)。所以……:

char* longhead(const char* s)
{
int len = strlen(s);
char * result = malloc(1 + (len * (len+1))/2);
char * p = result;
int i;

for(i=1; i<=len; ++i) {
memcpy(p, s, i);
p += i;
}
*p = 0;

return result;
}

当然,调用者必须对结果负责(完成后释放):您给出的示例调用代码将不可避免地导致内存泄漏。

关于C - 连接字符串的所有头部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1518195/

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