我正在尝试创建一个小程序,要求用户输入两个短语。输入两个短语后,我会将短语显示给用户。然后我将两个短语放入一个变量中,然后我使用一个变量第三次显示。
接下来,我试图从两个短语中随机选择一个字母并将该字母显示给用户。
我一直在网上做一些研究,看看人们如何随意挑选信件,但除了随意挑选单词外,我还没有看到任何其他内容,但是我没有真正看到这可以应用于我自己的程序。
提前感谢。
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;
}
答案 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
。