c - malloc 和 strncpy

标签 c malloc strncpy

我试图将一个字符串一分为二以传递给两个 child 。第一部分应该是 12 个“0”字符,第二部分应该是 13 个“1”字符。当我执行这段代码时,我没有得到任何这些东西。具体来说,这是输出。 左父:00000000000 家长权利:0000000000001 我不知道为什么,有人可以帮忙吗?

int bit_count(char *passed, int len){
int left = len/2;
int right =(len/2)+(len % 2);
char *lstring = malloc(sizeof(char)*(left+1));
char *rstring = malloc(sizeof(char)*(right+1));
strncpy(lstring, passed, sizeof(char)*12);
strncpy(rstring, passed+left, sizeof(char)*13);
printf("Parent Left: %s\n", lstring);
printf("Parent Right: %s\n", rstring);

最佳答案

如果您不需要strncpy 并且您不确切知道它的作用,请不要使用它。

在您的情况下,这完全是多余的,无论如何,您知道要复制的数组的大小。所以使用memcpy:

memcpy(lstring, passed, left);
lstring[left] = '\0';
memcpy(rstring, passed+left, right);
rstring[right] = '\0';

关于c - malloc 和 strncpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19338327/

相关文章:

c - 是否可以在编译期间动态创建等效的limits.h宏?

使用左移和按位或将两个无符号字节组合成一个整数值

c - malloc 对象上的 Free throws 错误

C++:将类实例存储在分配的内存中

c - 关于c中的rand()

c - 在 c 中逐个像素地模糊图像 - 特殊情况

c - malloc:错误检查和释放内存

c - 奇怪的 strncpy、fgets 行为

c - 如何在 C 中将一个字符串分成多个其他特定长度的字符串?

c - 使用 strncpy。 Valgrind 抛出无效读取