C – 如何在数组中存储多个字符串

想知道如何在数组中存储不同的字符串。 例如,用户将输入’qwe’,然后程序将其存储在数组变量[0]中。 输入另一个字符串然后将其存储为变量[1],依此类推

int main(int argc, char *argv[]) { char variable[1000]; int i; printf("enter a variable\n"); scanf("%s", variable); for (i = 0; ??? ;i++) { printf("The variable entered was: %s\n",variable[i]); } return 0; 

我是C的新手,所以我不知道我在做什么。 但这就是我到目前为止所提出的,并且想知道我是否可以得到一些帮助来填补其余的谢谢!

您可以使用2D数组来存储多个字符串。 对于10个长度为100的字符串

 char variable[10][100]; printf("Enter Strings\n"); for (int i = 0; i < 10 ;i++) scanf("%100s", variable[i]); 

最好使用fgets来读取字符串。

 fgets(variable[i], sizeof(variable[i]), stdin); 

您还可以使用指向char的指针数组来使用动态内存分配。

variable[0]刚刚存储了字符串的第一个字母。 如果要在数组中存储多个字符串,可以使用2D数组。 它的结构就像

 arr[3][100] = { "hello","world", "there"} 

你可以访问它们

printf("%s", arr[0]); 逐一。

最有效的方法是拥有一个字符指针数组,并根据需要为它们分配内存:

 char *strings[10]; int main(int ac, char *av[]) { memset(strings, 0, 10 * sizeof(char *)); for (int i = 0; i < 10; i += 1) { char ins[100]; scanf("%100s", ins); strings[i] = malloc(strlen(ins) + 1); if (strings[i]) { strcpy(strings[i], ins); } } } 

scanf返回成功的readed参数的数量;

将2D数组用于字符串数组

永远不要走出界限arrays

 #include  //Use defines or constants! #define NUM_STRINGS 10 #define MAX_LENGTH_OFSTRING 1000 int main() { char variable[NUM_STRINGS][MAX_LENGTH_OFSTRING +1 /*for '\0' Null Character */]; int i = 0; printf("enter a variable\n"); while(scanf("%s", variable[i]) > 0){//if you print Ctrl+Z then program finish work. Do not write more than MAX_LENGTH_OFSTRING symbols printf("The variable entered was: %s\n",variable[i]); i++; if(i >= NUM_STRINGS) break; } return 0; }