嗯,这是一个基本程序,我得到了一系列字符,如:
char alphabet[5] = {'A', 'B2', 'C', 'D4', 'E'};
我想在for循环中打印该数组的元素:
int remainder = my_number % 5;
printf("%c\n", alphabet[remainder]);
这就是我无法按预期运行打印出来的地方
A
,2
,C
,4
或E
。如何打印B2
和D4
?
我听说过使用枚举但是我不明白我是如何使用的,我对元素有价值的想法感到困惑,以及如何使用它们来获取元素,例如:enum letters {'a', 'b', 'c'};
a = 0,b = 1且c = 2.
(也许只是我的语法不正确,但请你帮助我......)
我会打开我的代码以便于解释。
#include <stdio.h>
#include <stdlib.h>
const char *notes[13] = {"C", "C2", "D", "D2", "E", "F", "F2", "G", "G2", "A", "A2", "B", "c"}; // The 2's is for the "#"
int main(int argc, char const *argv[]) // Just using argv[1] to say how much numbers I want to print
{
int now, before_1 = 1, before_2 = 1, rem, steps; // "rem" stands for remainder
char note;
if (atoi(argv[1]) <= 2)
for (steps = 0; steps < atoi(argv[1]); steps++)
printf("1\n");
else
for (steps = 0; steps < atoi(argv[1]); steps++) // Main loop for Fibonacci's Numbers
{
now = before_1 + before_2;
rem = now % 13;
note = notes[rem];
printf("Note : %c <=> Rem : %d. Num : %d\n", note, rem, now);
before_2 = before_1; // Change values of variables
before_1 = now;
}
return 0;
}
这个想法是获得斐波纳契系列的数量并将它们转换成可能的所有13个音符(包括尖锐的音符),但正如我所说的那样,输出效果太好了。
答案 0 :(得分:3)
在这个问题的原始版本中,问题是双重的。
首先,字母被定义为一个字符数组,即char alphabet[]
。根据最初的问题,它应该被声明为一个字符串数组,即char *alphabet[]
。
其次,从第一个问题开始,在某种程度上,初始化值是字符,而它们应该被定义为字符串。 F2 定义为字符,因此'F2'
,不代表文字字符串&#34; F2&#34; 。
char *alphabet[] = {"A", "B2", "C", "D4", "E"};
最后,为了打印字符串而不是字符, printf 格式标识符必须从%c 更改为%s 。
总结一下,您可以按如下方式打印字符串数组的元素:
char *alphabet[5] = {"A", "B2", "C", "D4", "E"};
for(int i = 0; i < 5; i++){
printf("%s} ", alphabet[i]);
}
如果你从一开始就不知道数组的大小,你也可以写:
char *alphabet[] = {"A", "B2", "C", "D4", "E"};
for(int i = 0; i < sizeof(alphabet)/sizeof(alphabet[0]); i++){
printf("%s ", alphabet[i]);
}
希望它有所帮助!
答案 1 :(得分:1)
char
用于单个字符。如果你想要多个字符,你需要使用字符串。
char *strings[] = { "A", "B2", "C", "D4", "E"};
int remainder = my_number % 5;
printf("%s\n", strings[remainder]);
答案 2 :(得分:-1)
单引号用于表示char。所以'B2'
将被视为char。相反,您需要char*
,因此需要双引号。
答案 3 :(得分:-1)
正如odin19指出的那样,B2和D4不是C中的字符。为了打印它们,您可以在数组元素中使用双引号,并在printf中使用%s将它们打印为字符串。