Хранение символов в массиве с помощью указателей - PullRequest
0 голосов
/ 23 декабря 2018

Я должен создать массив с фиксированным размером (скажем, 5x5).Я должен заполнить его словами, введенными в качестве параметров командной строки.Я могу использовать только указатели.Очевидно, мне нужно создать двумерный массив [5] [5].Я не могу использовать более 25 писем (я сделаю, если заявления).Я собираюсь заменить пробел на некоторый символ ($ или что-то).Проблема в том, что я не знаю, как связать эти параметры командной строки с массивом, используя только указатели.

1 Ответ

0 голосов
/ 23 декабря 2018

Вам необходимо использовать аргументы 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...