gpt4 book ai didi

c++ - 尝试使用分隔符连接 c 字符串数组

转载 作者:行者123 更新时间:2023-12-01 14:47:29 25 4
gpt4 key购买 nike

这是我的代码

int main(int argc, char *argv[]) {

char const *strings[10] = {"dhh", "aci", "cdh"};
join_def(strings, 'l');

return EXIT_SUCCESS;
}


// part 1 read lines
void join_def(char const **strings, char delim) {
char *t = new char[100];
//int length = 0;
t[0] = '\0';
int x = sizeof(strings);
std::cout << delim << std::endl;

for (int i = 0; i < x; i++) {
int size = 0;
while(strings[i][size]!='\0'){
size++;
std::cout << strings[i][size] << std::endl;
}
}
}
我现在已经花了几个小时我无法连接它
对于这个任务,我不能使用 cstring 或 iostream 以外的任何东西,所以请不要建议。
输出需要是一个 c-string = "dhhlacilcdh"

最佳答案

首先,您无法确定传递给函数的数组中元素的数量,因为该数组将衰减为一个简单的指针。那么,您的 sizeof(strings)表达式将(在编译时)计算为指针的(固定)大小(以字节为单位)。为了让函数“知道”数组中有多少个元素,需要明确地告诉它(通过额外的参数)。
其次,您有您的 i ' 和 sizestd::cout << strings[i][size] << std::endl; 中以错误的方式索引行,进一步增加 size在打印相关字符之前,而应该在打印后递增。
下面的代码也进行了字符串的实际连接,以及修改后的 join_def函数现在返回一个指向该结果的指针(当你完成它时必须释放它);

#include <iostream>

char* join_def(char const** strings, char delim, int x)
{
char* t = new char[100];
int length = 0;
t[0] = '\0';
//int x = sizeof(strings);
std::cout << delim << std::endl;
for (int i = 0; i < x; i++) {
int size = 0;
while (strings[i][size] != '\0') {
std::cout << strings[i][size] << std::endl;
t[length++] = strings[i][size]; // Append this character
size++;
}
t[length++] = delim; // Append delimiter
}
t[length] = '\0'; // Append nul-terminator
return t;
}

int main()
{
char const* strings[10] = { "dhh", "aci", "cdh" };
char* result = join_def(strings, 'l', 3);
std::cout << result << std::endl;
free(result);
return 0;
}
另请注意,我已经移动了 join_def main之前的功能码(调用它)。如果您不这样做,那么至少必须在 main 之前提供该函数的(前向)声明(仅 char* join_def(char const** strings, char delim, int x); 本身就可以)。
随时要求进一步澄清和/或解释。

关于c++ - 尝试使用分隔符连接 c 字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62530959/

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