C - Установка статического массива char с помощью «строки» - PullRequest
3 голосов
/ 30 апреля 2011

очень простой вопрос, боюсь, но я застрял в течение нескольких дней с этим, Google ничего не дает, я даже пытался bing ...; o)

Я работаю в чистом C под Windows в VS2010.

У меня есть статический массив символов как таковой ...

static char word[5];

Я могу точно установить каждую позицию массива, т.е. ...

word[0] = 'f'; word[1] = 'o'; word[2] = 'o';

Но, похоже, я не могу сделать (в любой момент после объявления) ...

word = "foo";

Любая помощь или указатели относительно того, куда я иду не так, будут очень признательны.

Спасибо всем заранее.

Ответы [ 2 ]

4 голосов
/ 30 апреля 2011
strncpy(word, "foo", _countof(foo));

Если _countof не определено, используйте sizeof(foo) / sizeof(*foo).

2 голосов
/ 30 апреля 2011

Массивы не указатели. Указатели не являются массивами.

В большинстве случаев, массивы распадаются на указатель на свой первый элемент. Этот указатель не может быть изменен, хотя.

В

word = "foo";

массив word распадается на неизменяемый указатель на его первый элемент ... и вы пытаетесь изменить этот указатель, присвоив ему адрес строкового литерала "foo"

...