2016-11-20 100 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"}; 
相关问题