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

时间:2015-04-10 18:23:52

标签: c arrays string

想知道如何在数组中存储不同的字符串。 例如,用户将输入'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的新手,所以我不知道我在做什么。但这就是我到目前为止所提出的,并且想知道我是否可以得到一些帮助来填补其余部分 谢谢!

4 个答案:

答案 0 :(得分:9)

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

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的指针数组来使用动态内存分配。

答案 1 :(得分:1)

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

这样的结构
arr[3][100] = { "hello","world", "there"}

您可以将其作为

进行访问

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

答案 2 :(得分:0)

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

将二维数组用于字符串数组

永远不会超出界限数组

#include <stdio.h>

//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;
}

答案 3 :(得分: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);
        }
     }
  }