[英]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]);
那就是我無法按預期運行的地方,打印輸出為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個音符(包括尖音),但是正如我所說的,輸出的音符效果太好了。
在此問題的原始版本中,問題是雙重的。
首先, 字母被定義為字符數組,即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.