#arrays #c #char #scanf #strcpy
Вопрос:
Я пытаюсь вставить символ в определенную позицию в массив символов (char *peep), но каждый раз, когда я пытаюсь, я получаю ошибку strcpy
Текущий Код
int main(){ char *peep = malloc(256); int pos; char character, charToStr[2]; charToStr[1] = ''; printf("nCharacter to insert: "); scanf("%c", amp;character); printf("Position to insert: "); scanf("%d", amp;pos); printf("nPeep becomesn%d:%c", pos,character); charToStr[0] = character; strcpy(peep[pos-1],charToStr); printf("this is peep: n%d:%c",pos,peep[pos-1]); }
Я пытался использовать strncpy() безрезультатно и честно пробовал много других вещей
Комментарии:
1. strcpy ожидает указатель на символ в качестве своего первого аргумента, вы передаете символ.
2. я хочу, чтобы передаваемый персонаж находился в определенном месте, как бы я это сделал, если бы этот первый аргумент не был тем, что он есть?
3.
peep[pos-1] = character;
? Хотя и не уверен, что вы действительно пытаетесь сделать, так как остальная частьpeep
все равно будет содержать данные мусора.4.
printf("this is peep: n%d:%c",pos,peep[pos]);
и почему вы пытаетесь печатать в индексеpos
pos-1
, когда задается индекс? Весь код действительно имеет очень мало смысла.5. это была опечатка, спасибо за ваш 1-й комментарий
Ответ №1:
Посмотрите на подпись strcpy
функции:
char *strcpy(char *dest, const char *src);
Как вы можете видеть, эта функция ожидает символьный указатель в качестве целевой строки.
Однако в вашем коде вы передаете функции простой символ. Это связано с тем, что вы разыменовываете строку в индексе [pos-1]
.
Следовательно, вы должны использовать оператор амперсанд ( amp;
), чтобы передать адрес вашей целевой строки. Таким образом, изменение вашего strcpy
вызова на strcpy(amp;peep[pos - 1], charToStr);
заставит ваш код работать должным образом.