Правильный способ копирования C-строк

Есть ли простой способ скопировать C-строки?

У меня есть const char *stringA, и я хочу char *stringB для получения значения (обратите внимание, что stringB не равно const). Я пробовал stringB=(char*) stringA, но это заставляет stringB по-прежнему указывать на ту же ячейку памяти, поэтому, когда stringA позднее изменяется, stringB тоже.

Я также пробовал strcpy(stringB,stringA), но кажется, что если stringB не был инициализирован достаточно большим массивом, возникает segfault. У меня нет большого опыта работы с C-струнами, я упускаю что-то очевидное? Если я просто инициализирую stringB как char *stringB[23], потому что я знаю, что у меня никогда не будет строки длиннее 22 символов (и с учетом нулевой терминатор), это правильный путь? Если stringB проверяется на равенство с другими C-строками, повлияет ли дополнительный пробел на что-нибудь?

(и просто использование строк здесь не решение, так как мне нужны минимальные накладные расходы и легкий доступ к отдельным символов)

11
задан Evan Teran 7 March 2012 в 01:03
поделиться