我正试着把一根线切成两条传给两个孩子。第一部分应该是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);
发布于 2013-10-12 20:33:47
如果您不需要strncpy
,如果您不知道它的确切功能,就不要使用它。
无论如何,在您的示例中,它是完全多余的,您知道要复制的数组的大小。所以使用memcpy
memcpy(lstring, passed, left);
lstring[left] = '\0';
memcpy(rstring, passed+left, right);
rstring[right] = '\0';
发布于 2013-10-12 19:40:20
问题是,如果strncpy()
由于限制而停止,而不是到达源字符串的末尾,它就不会添加空终止符。因此,您需要添加空终止符。
int bit_count(char *passed, int len) {
int left = len/2;
int right = len - left;
char *lstring = malloc(left+1);
char *rstring = malloc(right+1);
strncpy(lstring, passed, left);
lstring[left] = '\0';
strncpy(rstring, passed+left, right);
rstring[right] = '\0';
printf("Parent Left: %s\nParent Right: %s\n", lstring, rstring);
}
发布于 2013-10-12 19:42:00
在每个strncpy之后添加空字符
lstring[left]='\0';
rstring[right]='\0';
https://stackoverflow.com/questions/19338327
复制相似问题