在C中复制字符串时,我必须注意哪些因素?什么可能出错?
我可以想到我需要在复制字符串之前保留足够的内存,并且必须确保我有足够的权限写入内存(尽量避免一般保护错误),但还有什么我必须注意的在复制字符串时?还有其他潜在的错误吗?
答案 0 :(得分:3)
0
= '\0'
)。答案 1 :(得分:2)
C字符串通常是以零字节结尾的非零字节数组。处理它们的例程得到一个指向一个字节的指针(它指向从该字节开始的数组)。你应该注意保留的地方适合。了解strcpy
和strcat
及其有界的对应部分strncpy
和strncat
。也是关于strdup
。并且不要忘记将终止字节清零(特别是在到达strncpy
等边界时...)。一些库(例如来自GTK的Glib)提供了很好的实用功能(例如g_strdup_printf
)构建字符串。
阅读我提到的所有功能的文档。
答案 2 :(得分:2)
你需要:
为目的地分配足够的内存(strlen(source)+ 1)
确保源不是NULL
处理unicode问题(字符串长度可能小于 字节)
答案 3 :(得分:1)
你必须注意C中字符串的定义:它们是以空终止字符('\ 0')结尾的字符序列。
string.h中的所有函数都将使用此假设。使用这些功能,你应该没事。