簡體   English   中英

在C中打印數組的元素

[英]Printing elements of an Array in C

好吧,這是一個基本程序,我得到了一個字符數組,例如:

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個音符(包括尖音),但是正如我所說的,輸出的音符效果太好了。

在此問題的原始版本中,問題是雙重的。

首先, 字母被定義為字符數組,即char alphabet[] 根據最初的問題,它應該聲明為字符串數組,即char *alphabet[]

其次,從第一期開始以某種方式出現之后,初始化值是字符,而初始化值應定義為字符串。 F2定義為字符,即'F2'不會表示文字字符串“ F2”

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]);
}

希望能幫助到你!

char用於單個字符。 如果要使用多個字符,則需要使用字符串。

char *strings[] = { "A", "B2", "C", "D4", "E"};

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

單引號用於表示字符。 因此, 'B2'將被視為字符。 相反,您需要char* ,因此要使用雙引號。

如odin19所指出的,B2和D4不是C中的字符。要打印它們,可以在數組的元素中使用雙引號,並在printf中使用%s將它們打印為字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM