int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
Я получаю ошибку: "invalid initializer" в строке с revS. Что я делаю неправильно?
int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
Я получаю ошибку: "invalid initializer" в строке с revS. Что я делаю неправильно?
Поскольку вы не можете инициализировать подобное, вам нужно постоянное выражение в качестве значения инициализации. Замените его на:
int main (void) {
char testStr[50] = "Hello, world!";
char revS[50]; strcpy (revS, testStr);
:
}
Или, если вы действительно хотите инициализировать, вы можете использовать что-то вроде:
#define HWSTR "Hello, world!"
int main (void) {
char testStr[50] = HWSTR;
char revS[50] = HWSTR;
:
}
Это обеспечивает постоянное выражение с минимальным дублированием в вашем источнике.
Массивы arent присваиваются.
Вы должны использовать memcpy для копирования содержимого от testStr до revS
memcpy(revS,testStr,50);
Для инициализации массивов могут использоваться только константные выражения, как при инициализации testStr.
Вы пытаетесь инициализировать revS другой переменной массива, которая является не константным выражением. Если вы хотите скопировать содержимое первой строки во вторую, вам нужно будет использовать strcpy.
Инициализатор для char[] должен быть либо литеральной строкой, либо чем-то вроде {1,2,3,4}. Нельзя назвать имя другой переменной.
Вы делаете
char revS[50] = testStr;
что неверно, поскольку вы не можете назначить char * char.
Попробуйте revS = testStr;, он должен работать.
Если вы планируете манипулировать вторым массивом, вы также можете использовать указатель:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = textStr;
printf("%s\n", revS);
}
Если вы хотите действительно сумасшедший, вы можете указать на конкретное место в массиве с помощью оператора ссылки:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = &textStr[5];
printf("%s\n", revS);
}