如何从用户输入的一堆单词中选择一个随机字母

时间:2015-09-16 20:17:59

标签: c random

我正在尝试创建一个小程序,要求用户输入两个短语。输入两个短语后,我会将短语显示给用户。然后我将两个短语放入一个变量中,然后我使用一个变量第三次显示。

接下来,我试图从两个短语中随机选择一个字母并将该字母显示给用户。

我一直在网上做一些研究,看看人们如何随意挑选信件,但除了随意挑选单词外,我还没有看到任何其他内容,但是我没有真正看到这可以应用于我自己的程序。

提前感谢。

P.S我注意到,当将两个短语一起显示时,第二个短语在换行符上。任何人都可以解释为什么会发生这种情况以及如何摆脱它?谢谢

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


int main()
{
    srand(time(NULL));
    char phrase1[100], phrase2[100];
    printf("Please enter your first phrase\t");
    fgets(phrase1, 100, stdin);
    printf("Please enter your second phrase\t");
    fgets(phrase2, 100, stdin);
    printf("The first phrase you entered was: %s", phrase1);
    printf("The second phrase you entered was: %s", phrase2);
    strcat(phrase1, phrase2);
    phrase1[strlen(phrase1)-1] = ' ';
    printf("Both phrases put together in one sentence is: %s", phrase1);
    return 0;

}

2 个答案:

答案 0 :(得分:3)

首先播种RNG:

srandom(getpid() ^ time(NULL));

然后得到0和strlen(phrase)-1之间的随机数:

int rnum = random() % strlen(phrase);

然后打印有问题的角色:

printf("random char: %c\n",phrase1[rnum]);

您在串联字符串中看到换行符的原因是fgets添加了按Enter键生成的换行符。你可以通过修剪一个字符来删除它:

fgets(phrase1, 100, stdin);
phrase1[strcspn(phrase1, "\n")] = '\0';
...
fgets(phrase2, 100, stdin);
phrase2[strcspn(phrase1, "\n")] = '\0';

答案 1 :(得分:0)

第一个问题: - 找到一种生成0和某个整数A之间的随机整数的方法。 - 使A成为组合字符串中的字符数。假设结果随机整数是B. - 打印出你的字符串[B]。

我觉得你可以把它拼凑起来。在您学习过程的这个阶段,获取代码答案可能没有用处。

第二个问题:我看到你用空格替换第一个字符串的末尾,试图捕捉\n。根据您的环境,它前面可能还有一个\r