📜  根据用户输入在 c 中创建字符串数组 (1)

📅  最后修改于: 2023-12-03 15:26:42.148000             🧑  作者: Mango

根据用户输入在 c 中创建字符串数组

在 C 语言中,我们可以通过以下步骤创建字符串数组,从而实现根据用户输入动态创建数组的功能:

步骤一

首先,我们需要引入头文件。

#include <string.h>

头文件 string.h 包括了字符串处理的函数,我们在后面的步骤中需要用到其中的函数。

步骤二

接下来,我们需要定义变量和读取用户输入。

char input_string[1024];
fgets(input_string, sizeof(input_string), stdin);

这里我们定义了字符数组 input_string,可以容纳最大为 1024 个字符。我们使用 fgets() 函数从标准输入流中读取用户输入。注意,fgets() 函数会在字符串末尾添加一个换行符,因此在后面我们需要删除它。

步骤三

接下来,我们需要删除字符串末尾的换行符。我们可以使用 strlen() 函数获取字符串长度,通过将换行符替换为 null 字符 '\0' 完成删除。

int len = strlen(input_string) - 1;
if (input_string[len] == '\n')
    input_string[len] = '\0';
步骤四

现在,我们已经获取了用户输入的字符串,并删除了末尾的换行符,可以将其保存到一个字符串数组中。

char* array[] = {input_string};

这里我们定义了一个字符串数组 array,将 input_string 赋值为第一个元素。

步骤五

如果需要根据用户的输入创建多个元素的字符串数组,我们可以使用循环语句。

int num_of_strings;
scanf("%d", &num_of_strings);
char* array[num_of_strings];
for (int i = 0; i < num_of_strings; i++) {
    char input_string[1024];
    fgets(input_string, sizeof(input_string), stdin);
    int len = strlen(input_string) - 1;
    if (input_string[len] == '\n')
        input_string[len] = '\0';
    array[i] = input_string;
}

这里我们通过 scanf() 函数获取用户要创建的字符串数组的元素数量,然后在 for 循环中读取用户输入的字符串,并将其加入字符串数组 array 中。

完整代码
#include <stdio.h>
#include <string.h>

int main() {
    char input_string[1024];
    fgets(input_string, sizeof(input_string), stdin);
    int len = strlen(input_string) - 1;
    if (input_string[len] == '\n')
        input_string[len] = '\0';
    char* array[] = {input_string};
    printf("Created array with one string: %s\n", array[0]);

    int num_of_strings;
    scanf("%d", &num_of_strings);
    char* array[num_of_strings];
    for (int i = 0; i < num_of_strings; i++) {
        char input_string[1024];
        fgets(input_string, sizeof(input_string), stdin);
        int len = strlen(input_string) - 1;
        if (input_string[len] == '\n')
            input_string[len] = '\0';
        array[i] = input_string;
    }
    printf("Created array with %d strings:\n", num_of_strings);
    for (int i = 0; i < num_of_strings; i++) {
        printf("%s\n", array[i]);
    }

    return 0;
}

以上是根据用户输入创建 C 语言字符串数组的完整代码。