用C打印数组元素

时间:2016-06-24 00:20:05

标签: c arrays enums

嗯,这是一个基本程序,我得到了一系列字符,如:

char alphabet[5] = {'A', 'B2', 'C', 'D4', 'E'};

我想在for循环中打印该数组的元素:

int remainder = my_number % 5; printf("%c\n", alphabet[remainder]);

这就是我无法按预期运行打印出来的地方 A2C4E。如何打印B2D4

我听说过使用枚举但是我不明白我是如何使用的,我对元素有价值的想法感到困惑,以及如何使用它们来获取元素,例如: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个音符(包括尖锐的音符),但正如我所说的那样,输出效果太好了。

4 个答案:

答案 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将它们打印为字符串。