Есть ли простой способ скопировать 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-строками, повлияет ли дополнительный пробел на что-нибудь?
(и просто использование строк здесь не решение, так как мне нужны минимальные накладные расходы и легкий доступ к отдельным символов)