перемещение строки из одного массива в другой - PullRequest
0 голосов
/ 20 июня 2020

Мне нужно создать программу, в которой генерируется случайное число, и это число затем принимается как индекс массива article. Я должен удерживать строку, присутствующую в этом индексе, в другом массиве, «удерживать». Однако, похоже, это не работает. Какую ошибку я сделал?

#include<stdio.h>
#include<string.h>
int main()
{
   char *article[]={"the","a","one","some","any"};
   int x;
   char hold[20];
   x=1+rand()%5;
   article[x]=hold;
   printf("\n%s",hold);
}

1 Ответ

4 голосов
/ 20 июня 2020

Что означает 1+ для x=1+rand()%5;. Если вы используете x в качестве индекса для article, он должен быть от 0 до 4 включительно. Таким образом, вы должны использовать x=rand()%5;.

Затем вы делаете article[x]=hold;, ожидая, что hold будет содержать выбранную статью. Вы, вероятно, имели в виду hold=article[x];.

Но вы определили char hold[20];, как если бы вы планировали сделать копию там, поэтому вы, вероятно, имели в виду hold=strcpy(hold, article[x]);.

Наконец, я заметил, что вы поместили строку break перед строкой, а не после в printf("\n%s",hold);. Вы имеете в виду printf("%s\n",hold);?

Для вашей информации, вся функция main() может быть переписана следующим образом:

   char *article[]={"the","a","one","some","any"};
   printf("%s\n",article[rand()%5]);

, но ее легче читать, если вы сохраните отдельные шаги, как вы сделал.

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