Во-первых, я не знаю, должен ли writerbuff
завершать строку или нет.Это вопрос дизайна, на который должен ответить тот, кто решил, что writebuff
должно существовать вообще.
Во-вторых, если взять ваш конкретный пример в целом, то есть две проблемы.Во-первых, вы передаете неопределенную строку в operator<<(ostream, char*)
.Во-вторых, закомментированная строка записывает за конец указанного буфера.Оба они вызывают неопределенное поведение.
(Третий - недостаток дизайна - знаете ли вы, что length
всегда меньше длины text
?)
Попробуйте это:
int writebuff(char* buffer, int length){
string text="123456789012345";
memcpy(buffer, text.c_str(),length);
buffer[length-1]='\0';
return 1;
}
int main(){
char* buffer = new char[10];
writebuff(buffer,10);
cout << "After: "<<buffer<<endl;
}