2013-12-16 41 views
0

我一直在使用Google搜索幾天,試圖在C中找到正確的語法,以便按照無序排列方式打印數組。我是C新手,但很熟悉php,Java。我是否使用了錯誤的邏輯方法?僅打印C中某些位置的陣列C

我想打印出來是

 "Here is your order, 2B 3C 1A" 

我曾嘗試使用以下類型的代碼嘗試,但得到的,

 @[2] (null)[3] (null)[1] 
    segmentation fault 

    char *aa="1A"; 
    char *bb="2B"; 
    char *cc="3C"; 
    char * zz[]={aa,bb,cc}; 
    g_print("Here is your order, %s[2] %s[3] %s[1]",zz); 

感謝 藝術

+1

'爲(I = 0; I <3;我++)printf的( 「%S」,ZZ [I]);',改爲了你喜歡。 – moeCake

+0

...並閱讀printf的文檔。 –

回答

2

你要打印數組中的每個字符串:

g_print("Here is your order, %s %s %s",zz[1], zz[2], zz[0]); 

注意索引!

如果在運行時設置的項目數,你必須使用一個循環:

g_print("Here is your order,"); 
for (size_t i = 0; i < some_upper_limit; ++i) 
    g_print(" %s", zz[i]); 

另外請注意,您聲明aabbcc變量是錯誤的。你應該將它們聲明爲數組,或者作爲指向常量字符串的指針。這是因爲字符串文字是不變的。

所以:

char aa[]="1A"; 
char bb[]="2B"; 
char cc[]="3C"; 

const char *aa="1A"; 
const char *bb="2B"; 
const char *cc="3C"; 
+0

感謝@Joachim Pileborg對於兩個alt's,現在它是有道理的。 thx藝術 –

2

使用:

g_print("Here is your order, %s %s %s",zz[1], zz[2], zz[0]); 

數組索引以0開始。字符串的內容不針對數組索引進行評估。