gpt4 book ai didi

c - 如何从字符串数组创建字符串 C

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

我正在学习数组,想知道是否有人可以帮助我。我有一个字符串数组,需要创建一个新字符串,它是所有数组元素的串联。我遇到的问题是我只能打印数组中的第一个字符串,而不是全部。我知道数组中每个字符串的末尾都有一个空值,那么我该如何解决这个问题呢?也许是二维数组?顺便说一句,我不允许使用 string.h 中的任何字符串操作函数。谢谢。

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


int findLength(char array[])
{
int i = 0;
for (i = 0; array[i] != '\0'; i++)
{
}
return i;
}

void arrayToString(char string[])
{
int n = 0;
int i = 0;
int l = findLength(string);
char *finalString;
finalString = malloc(l * sizeof(char));
for (i = 0; string[i] != '\0'; i++) {
finalString[n] = string[i];
n++;
}
for (i = 0; finalString[i] != '\0'; i++) {
printf("%c", finalString[i]);
}
}

int main(int argc, const char * argv[])
{
char *color[] = { "red", "blue", "red" };
arrayToString(*color);
return 0;
}

最佳答案

将函数 arrayToString 更改为具有两个参数。其中一个参数为 char ** 类型,第二个参数为 size_t 类型,定义字符串数量。还让它的返回值为char *以返回指向已分配内存的指针。最后不要忘记释放该内存。

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


int findLength(char array[]) {
int i = 0;
for (i = 0; array[i] != '\0'; i++) {
}
return i;
}

char* arrayToString(char **string, size_t size) {
int bigSize = 0, len;
int i = 0, j, k;
for (j = 0; j < size; j++) {
bigSize += findLength(string[j]);
}
char *bigstring = (char *)malloc(bigSize + 1);
for (j = 0; j < size; j++) {
len = findLength(string[j]);
for (k = 0; k < len; k++) {
bigstring[i++] = string[j][k];
}
}
bigstring[i] = '\0';
return bigstring;
}

int main(int argc, const char * argv[])
{
char *color[] = { "red", "blue", "red" };
char *bigstring = arrayToString(color, 3);
printf("%s\n", bigstring);
free(bigstring);
return 0;
}

关于c - 如何从字符串数组创建字符串 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756596/

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