2016-11-20 55 views
2

這可能是一個新手的問​​題,但這裏是我的問題:訪問字符串數組的第一個元素用C

我要聲明字符串數組但是當我訪問的第一要素,其他要素獲取與它連接起來。

#include <stdio.h> 
int main(){ 
    char words[2][3] = {"foo", "bar"}; 
    printf("%s\n", words[0]); // I want to print foo 
    printf("%s\n", words[1]); // I want to print bar 
} 

,輸出

foobar 
bar 

雖然我期待

foo 
bar 

有人可以解釋:

  1. 剛纔發生了什麼?
  2. 如何獲得我期待的行爲?
+1

您想了解C-「字符串」是什麼以及如何處理它們。 – alk

回答

10

你的陣列word沒有在琴絃末端的空字節足夠的空間,當你嘗試(使用%s)打印元素作爲C-字符串它會導致undefined behaviour。增加陣列大小:

char words[2][4] = {"foo", "bar"}; 
相關問題