Memcpy, string и terminator

Мне нужно написать функцию, которая заполняет буфер char * на заданную длину содержимым строки. Если веревка слишком длинная, мне просто нужно ее разрезать. Буфер выделяется не мной, а пользователем моей функции. Я пробовал примерно так:

int writebuff(char* buffer, int length){
    string text="123456789012345";
    memcpy(buffer, text.c_str(),length);
    //buffer[length]='\0';
    return 1;
}


int main(){
    char* buffer = new char[10];
    writebuff(buffer,10);
    cout << "After: "<<buffer<<endl;
}

мой вопрос по терминатору: должно быть там или нет? Эта функция используется в гораздо более широком коде, и иногда кажется, что у меня возникают проблемы со странными символами, когда строку нужно разрезать.

Есть какие-нибудь подсказки относительно правильной процедуры?

6
задан Lightness Races with Monica 10 May 2011 в 15:33
поделиться