【发布时间】:2016-03-02 19:41:11
【问题描述】:
我正在学习数组,想知道是否有人可以帮助我。我有一个字符串数组,需要创建一个新字符串,它是所有数组元素的串联。我遇到的问题是我只能打印数组中的第一个字符串,而不是全部。我知道我的数组中每个字符串的末尾都有一个空值,那么我将如何解决这个问题?也许二维数组?顺便说一句,我不允许使用 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;
}
【问题讨论】:
-
只是提示使用嵌套 for 循环!
-
void arrayToString(char string[])只接受单个字符串,因此只能对单个字符串进行操作。您需要将其更改为:void arrayToString(char *strings[], size_t len)。请注意,传入数组的len非常重要,因为它不能从函数内的数组本身派生。在你这样做之后,然后使用@ch3rub7 给出的提示。另外,不要忘记free分配的finalString. -
谢谢@kaylum 和@ch3rub7!
标签: c arrays string multidimensional-array