如何在终端中以c语言打印一组随机字母?
问题描述:
我想在终端上每2秒打印一次随机音乐笔记,以在我的ocarina上进行练习。音乐笔记的集合是(A,B,C,D,E,F和G),这是我需要帮助的代码,因为我是编码新手。如何在终端中以c语言打印一组随机字母?
#include <stdio.h>
#include <unistd.h>
int main(){
char A, B, C, D, E, F, G;
char notes[7] = { A, B, C, D, E, F, G };
while (1) {
printf("%c\n", notes);
sleep(2);
}
}
编译时我得到这个错误。
warning:format ‘%c’ expects argument of type ‘int’, but argument 2 has type ‘char*’ [-Wformat=] printf("%c\n", notes);
当我改变的printf的%C到%s所有我在终端“@”每2秒搞定,我究竟做错了什么? 我的问题的另一部分如何添加打印散记 我需要添加哪些代码?
答
你并不需要单独申报char
变量,只是你想要的音符初始化数组。
然后,为了采取的第一个音符,你需要做的notes[0]
,第二notes[1]
,第三notes[2]
,...,以及最后notes[sizeOfArray - 1]
。因此,在一般情况下,你做notes[i]
访问数组的第i个元素,其中索引从0
所以开始,你不能这样做printf("%c\n", notes);
,因为%c
预计单个字符,而notes
是字符数组(你可以说)。如果您使用%s
,它会打印整个字符串,但我们不希望这样。
如果我们想打印数组的第一个字符,我们会做:
printf("%c\n", notes[0]);
现在,我们要随机访问阵列,因此我们不想0,但一些随机的,这将在允许范围内(我们必须小心不要超出范围)。因此,这将是一件好事:
printf("%c\n", notes[randomIndex]);
您可以替换randomIndex
,通过一个函数调用,将返回一个随机指数,像randomRange()
我有波纹管。
实施例:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
int randomRange(int min, int max)
{
return (rand() % (max - min + 1)) + min;
}
int main(void)
{
srand((unsigned int)time (NULL));
const int size = 7;
char notes[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' };
for(int i = 0; i < 5; ++i) {
printf("%c\n", notes[randomRange(0, size - 1)]);
sleep(2);
}
return 0;
}
输出:
D
F
A
G
G
查一查'srand'和'rand' –
变化'炭笔记[7] = {A,B,C,d,E, F,G};'到'炭笔记[] = {“ABCDEFG”;' –
,一旦你找出如何使用RAND,初始化变量i,其获取阵列音符之间0和6访问随机数[I ] –