我必须创建一个程序,在其中生成一个随机数,然后将该数字假定为数组“ article”的索引。我必须将存在于该索引处的字符串保存在另一个数组“ hold”中。但是,这似乎不起作用。我犯了什么错误?
#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);
}
答案 0 :(得分:4)
1+
中的x=1+rand()%5;
是什么。如果将x
用作article
的索引,则它应介于0和4之间(含0和4)。因此,您应该使用x=rand()%5;
。
然后您article[x]=hold;
期望hold
将包含所选文章。您可能是说hold=article[x];
。
但是您将char hold[20];
定义为打算在此复制,所以您可能是指hold=strcpy(hold, article[x]);
。
最后我注意到您将换行符放在行的前面而不是printf("\n%s",hold);
的后面。您是说printf("%s\n",hold);
吗?
供您参考,可以像这样重写整个main()
函数:
char *article[]={"the","a","one","some","any"};
printf("%s\n",article[rand()%5]);
但是如果您像这样保持分开的步骤,则更容易阅读。