我正在學習數組,並想知道是否有人可以幫助我。我有一個字符串數組,需要創建一個新的字符串,它是所有數組元素的串聯。我遇到的問題是我只能打印我的數組中的第一個字符串,而不是所有的字符串。我知道我的數組中的每個字符串末尾都有一個空值,那麼我將如何解決該問題?也許2D數組?順便說一下,我不允許使用string.h中的任何字符串操作函數。謝謝。如何從字符串數組中創建一個字符串C
#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;
}
只是提示使用嵌套循環! – Cherubim
'void arrayToString(char string [])'只接受單個字符串,因此只能對單個字符串進行操作。您需要將其更改爲如下所示:'void arrayToString(char * strings [],size_t len)'。請注意,傳遞數組的'len'非常重要,因爲它不能從函數內的數組本身派生。在完成之後,使用@ ch3rub7給出的提示。另外,不要忘了'免費'分配'finalString.' – kaylum
謝謝@kaylum和@ ch3rub7! –