указатель от целого числа без приведения (программирование на C) - простая ошибка - PullRequest
0 голосов
/ 05 марта 2012
char str1[20] = "Something";
char *str2 = "Random";
strcat(str1, str2[1]);

Он дает указатель на ошибку из целого числа без приведения, почему str2 [1] обрабатывается как целое число?Так что мне делать, если я хочу разместить отдельные элементы в строке Спасибо!

Ответы [ 5 ]

3 голосов
/ 05 марта 2012

Поскольку элемент из массива char равен a char, который является целым типомЕсли вы хотите указатель на второй элемент, попробуйте str2 + 1 или &str2[1].

0 голосов
/ 05 марта 2012

str2[1] - это char, который повышается до int в соответствии с правилами продвижения типа C.Если вы хотите добавить один символ в строку, попробуйте следующее:

int len = strlen(str1);
str1[len] = str2[1];
str1[len + 1] = '\0';

Другими словами, strlen объединяет только две строки, а не строку и символ.

0 голосов
/ 05 марта 2012

str2[1] имеет тип char, тогда как в strcat() ожидается char *.Здесь вы должны были использовать str2 + 1.

0 голосов
/ 05 марта 2012

strcat ожидает указатели на символы, но str2[1] - это значение char, измените его на &str2[1], чтобы получить указатель на второй символ в str2.

0 голосов
/ 05 марта 2012

С str2 [1] подразумевается 2-й символ (начиная с индекса 0), который является «a» в «Random».

Если вам нужна полная строка, вам нужно написать str2 вместо str2 [1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...