Я знаю, що на це вже відповіли, але я хотів поділитися відповіддю, яку я дав тому, хто задав дуже подібне питання в групі C / C ++ у Facebook.
Масиви не мають функцій оператора присвоєння *. Це означає, що ви не можете просто призначити масив символів рядковому літералу. Чому? Оскільки сам масив не має жодного оператора присвоєння. (* Це покажчик const, який неможливо змінити.)
масиви - це просто область суміжної виділеної пам'яті, а ім'я масиву насправді є покажчиком на перший елемент масиву. (Цитата з https://www.quora.com/Can-we-copy-an-array-using-an- assignment-operator )
Щоб скопіювати рядковий літерал (наприклад, "Hello world"або "abcd") у ваш масив char, вам потрібно вручну скопіювати всі елементи символу рядкового літералу в масив.
char s[100]; Це ініціалізує порожній масив довжиною 100.
Тепер, щоб скопіювати ваш рядковий літерал на цей масив, використовуйте strcpy
strcpy(s, "abcd");Це скопіює вміст із рядкового літералу "abcd"та скопіює в s[100]масив.
Ось чудовий приклад того, що він робить:
int i = 0;
do {
s[i] = ("Hello World")[i];
} while(s[i++]);
Очевидно, слід використовувати strcpyзамість цього користувальницького копіювального рядка, але це хороший приклад, який пояснює, як strcpyпринципово працює.
Сподіваюся, це допомагає!