Как поместить строку в массив - PullRequest
0 голосов
/ 02 января 2019

Мне трудно поместить строку в массив.

Цель моей программы - генерировать случайные строки. И я хочу, чтобы эти сгенерированные случайные строки были помещены в массив, чтобы я мог получить доступ к этим строкам позже.

char main()
{
    srand(time(NULL));
    char* rStr[9] = {0};

    int i;
    for (i = 0; i < 7; i++)
    {
        randomString(rStr, 8);    //This is the function that generates a 
                          //random string with 8 characters
        printf("%d---%s\n", i, rStr);
    }   
}

Приведенный выше код выдаст 7 случайно сгенерированных строк по 8 символов. Но моя проблема в том, что я хочу, чтобы все сгенерированные строки были помещены в массив, чтобы я мог вызывать их или отображать снова.

Я попробовал это ниже:

char main()
{
    srand(time(NULL));
    char* rStr[9] = {0};
    int i;
    for (i = 0; i < 7; i++)
    {
        rStr[i] = randomString(rStr, 8);
        printf("%d---%s\n", i, rStr[i]);
    }   
}

но моя программа просто зависнет.

EDIT:

int randomNumber(int min, int max)     //This function is responsible for 
                                       //the randomness of the string
{
    max -= min;
    return (rand() % max) +min;
}

char randomString(char *str, int randomCharCount)
{
    const char *charSet = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int i;
    for (i = 0; i < randomCharCount; i++)
    {
        str[i] = charSet[randomNumber(0, 35)];
    }
}

Кредиты кода для учебника прямо здесь:

https://www.youtube.com/watch?v=3l1TKWVKyAY&index=58&list=PL0170B6E7DD6D8810&fbclid=IwAR2qq87y9qKt4PKPSZrwoRF10j1V9NU9W055j3-1YBXNBU7YtFDMMa1mxMg

https://www.youtube.com/watch?v=3l1TKWVKyAY&index=58&list=PL0170B6E7DD6D8810&fbclid=IwAR2qq87y9qKt4PKPSZrwoRF10j1V9NU9W055j3-1YBXNBU7YtFDMMa1mxMg

Ответы [ 2 ]

0 голосов
/ 02 января 2019

У вашего кода следующие проблемы

  1. Нет return тип для main().
  2. Вы должны объявить отдельный массив для сохранения strings.

Попробуйте следующий код: -

char main()
{
  srand(time(NULL));

  char rStr[9] = {0};
  // sStr is where the rStr are saved .
  char sStr[50][9];  // max 50 rStr
  int i;
  for (i = 0; i < 7; i++)
  {
    randomString(rStr, 8);
    strcpy(sStr[i],rStr);
    printf("%d---%s\n", i, sStr[i]);
  }
 // some return value here.
return 0;
} 
0 голосов
/ 02 января 2019

Думаю, вы ищете strcpy.

Инициализация, а затем «проталкивание» в массив:

char stringarray[MAX_NUMBER_STRINGS][MAX_STRING_SIZE]; 
strcpy(stringarray[0], "blah");

Также main должен возвращать int, смотрите действительные опции ниже для main:

int main(void);

или

int main(int argc, char* argv[]);

Ссылки:

Как создать массив строк в C?

Каковы действительные подписи для функции main () в C?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...