姬長信(Redy)

c – 复制C字符串的正确方法


有没有简单的方法来复制C字符串?

我有const char * stringA,我希望char * stringB取值(注意stringB不是const).我尝试了stringB =(char *)stringA,但是这使得stringB仍然指向相同的内存位置,所以当stringA稍后更改时,stringB也会这样做.

我也尝试过strcpy(stringB,stringA),但似乎如果stringB没有初始化为足够大的数组,那么就会出现段错误.我对C字符串没有超级经验,我错过了一些明显的东西吗?如果我只是将stringB初始化为char * stringB [23],因为我知道我永远不会有超过22个字符的字符串(并且允许空终止符),这是正确的方法吗?如果检查stringB是否与其他C字符串相等,那么额外的空间会影响到什么吗?

(并且在这里使用字符串不是解决方案,因为我需要最小的开销并且可以轻松访问单个字符)