使用指针将字符存储在数组中

时间:2018-12-22 21:01:19

标签: c arrays pointers

我应该创建一个固定大小的数组(比方说5x5)。我应该用键入作为命令行参数的单词来填充它。我只能使用指针。显然,我必须创建二维数组[5] [5]。我不能使用超过25个字母(我会写if语句)。我将用某些符号($或其他符号)替换空白。问题是我不知道如何仅使用指针将这些命令行参数与数组连接。

1 个答案:

答案 0 :(得分:0)

您需要使用主函数中的argc和argv参数。

这里是一个例子。

#include <stdio.h>

int main(int argc, char *argv[])
{
    for (unsigned i = 1; i < argc; i++)
    {
        printf("Word %u is: %s\n", i, argv[i]);
    }

    return 0;
}

您使用gcc main.c -o a.exe对其进行编译。 并使用a.exe hello world运行它。

编辑:

进一步评论。

您可以像这样创建一个指针数组:

#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char *my_array_of_strings[5]; // up to 5 strings

    // populate your array
    for (unsigned i = 1; i < argc; i++)
    {
        my_array_of_strings[i - 1] = malloc(strlen(argv[i]) + 1);

        if (NULL == my_array_of_strings[i - 1])
        {
            printf("oh no, memory failure");
            break;
        }

        memcpy(my_array_of_strings[i - 1], argv[i], strlen(argv[i]) + 1);

        printf("word is %s\n", my_array_of_strings[i - 1]);
    }

    return 0;
}