【发布时间】:2017-10-21 17:41:32
【问题描述】:
我想每 2 秒在终端上打印一个随机音符,以便在我的陶笛上练习。音符集是(A、B、C、D、E、F 和 G),这是我需要帮助的代码,因为我是编码新手。
#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 秒在终端“@”中得到所有信息,我做错了什么? 对于我的问题的另一部分,如何添加打印随机注释 我需要添加哪些代码?
【问题讨论】:
-
查找
srand和rand -
将
char notes[7] = { A, B, C, D, E, F, G };更改为char notes[] = { "ABCDEFG"; -
一旦你弄清楚如何使用 rand,初始化一个变量 i,它获取 0 到 6 之间的随机数,以 notes[i] 访问数组
-
您希望在
C中添加此内容的任何特殊原因?几乎任何其他流行语言都可以让这变得更加容易。 -
双关语意外 — 请注意,变量 A..G 未初始化,因此当您使用它们的值初始化
notes数组时,您使用的是不确定的值。不是很好。你真的不需要单独的变量。你确实需要使用rand()——也可能是srand(),但只需要使用callsrand()once——或者相当于生成新值的东西。您将一个字符数组(相当于,指向char的指针)传递给printf();你告诉它你将通过char。当你撒谎时,事情就不好办了。