2016-11-20 2 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-"string" и как с ними обращаться. – alk

ответ

10

Ваш массив word не имеет достаточного пространства для нулевых байтов на концах строк, и это приводит к undefined behaviour, как вы пытаетесь напечатать элементы, как C-строки (с помощью %s). Увеличьте размер массива:

char words[2][4] = {"foo", "bar"}; 
Смежные вопросы