char bufferChar[] = {0};
Это объявляет массив с одним элементом.
bufferChar[1] = bufferChar2;
Это попытка установить значение 2-го элемента в массиве из одного элемента. Переполнение буфера. Неопределенное поведение.
strcpy(input[1], input[1]);
Это не имеет никакого смысла. Помимо сомнительной причины для того, чтобы хотеть strcpy
() что-то сверху, input
является массивом char
, поэтому input[1]
- это одно значение char
, а strcpy()
принимает char *
аргументов.
Эта строка, должно быть, заставила ваш компилятор высвободить кучу предупреждений и/или ошибок. Пожалуйста, не игнорируйте диагностические сообщения от вашего компилятора. Это компилятор, говорящий вам, что вы делаете это неправильно.
strcat(input[1], bufferChar[1]);
Таким образом, мы пытаемся strcat
() другая пара char
с вместо char *
с. Это не будет работать лучше, чем попытка сделать strcpy()
то же самое.
Даже если ваш компилятор принимает это, итоговый код будет разбит, по крайней мере, на три или четыре разных способа, по моему счету.
Вам нужно:
Объявить input
и charBuffer
массивы, которые имеют достаточный размер, для того, что вы собираетесь делать с ними.
Проходные указатели, не char
s, как для strcpy()
(если вам нужно), и strcat()
.
char *
параметров, как для strcpy()
, так и для strcat()
массивов должны быть строками с нулевым символом. Вы несете ответственность за '\ 0'-завершение каждого параметра. Хотя есть несколько способов получить это «бесплатно», если вы сомневаетесь, явно 0-завершите их.
Пожалуйста, добавьте код. – Harry
@harry добавил мое текущее состояние –
Это больше похоже на C++, а не C. Вы программируете на C# или * управляете * C++? –