你有很多選擇提供的各種答案,我只是加了幾個點。 您可以創建一個字符串數組如下:
一,您可以按如下方式創建只讀字符串數組:
char *string_array0[] = {"Hello", "World", "!" };
這將創建3 陣列只讀字符串。在這種情況下,您不能修改字符串的字符,即string_array0[0][0]='R';
是非法。
二,您可以根據需要聲明指針數組&。
char *string_array1[2]; /* Array of pointers */
string_array1[0] = "Hey there"; /* This creates a read-only string */
/* string_array1[0][0] = 'R';*/ /* This is illegal, don't do this */
string_array1[1] = malloc(3); /* Allocate memory for 2 character string + 1 NULL char*/
if(NULL == string_array1[1])
{
/* Handle memory allocation failure*/
}
string_array1[1][0] = 'H';
string_array1[1][1] = 'i';
string_array1[1][2] = '\0'; /* This is important. You can use 0 or NULL as well*/
...
/* Use string_array1*/
...
free(string_array1[1]); /* Don't forget to free memory after usage */
三,你可以聲明一個二維字符數組。
char string_array2[2][4]; /* 2 strings of atmost 3 characters can be stored */
string_array2[0][0] = 'O';
string_array2[0][1] = 'l';
string_array2[0][2] = 'a';
string_array2[0][3] = '\0';
string_array2[1][0] = 'H';
string_array2[1][1] = 'i';
string_array2[1][2] = '\0'; /* NUL terminated, thus string of length of 2 */
四,你可以使用指向指針的指針。
char ** string_array3;
int i;
string_array3 = malloc(2*sizeof(char*)); /* 2 strings */
if(NULL == string_array3)
{
/* Memory allocation failure handling*/
}
for(i = 0; i < 2; i++)
{
string_array3[i] = malloc(3); /* String can hold at most 2 characters */
if(NULL == string_array3[i])
{
/* Memory allocation failure handling*/
}
}
strcpy(string_array3[0], "Hi");
string_array3[1][0]='I';
string_array3[1][1]='T';
string_array3[1][2]='\0';
/*Use string_array3*/
for(i = 0; i < 2; i++)
{
free(string_array3[i]);
}
free(string_array3);
要記住的要點:
希望這有助於!
P.S.:printf(1,"%s\n",paths[0]);
看起來黑幕
我幾乎是C的新手,你能幫我用字符創建一個字符串數組嗎?正如我在第二個例子中所做的那樣? – SMUsamaShah
請理解@Matthew的帖子。很明顯。 – Mahesh
相反,我明白你的觀點。當我做'路徑[0] =「123456」;'它會自動初始化爲它的長度(6)。但是,當我做'路徑[0] [0]'它不知道數組的第二維的大小。正確? – SMUsamaShah