【发布时间】:2013-10-20 17:24:36
【问题描述】:
我试图将一个字符串分成两部分以传递给两个孩子。第一部分应为 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);
【问题讨论】:
-
如果您要在这里硬编码 12 和 13,为什么还要计算左右。这没有任何意义。
-
对,我将其更改为只是为了了解正在发生的事情。最终我会左右用户。
-
你不需要乘以
sizeof(char)--strncpy的参数是要复制的字符数,而不是大小。 -
@Barmar,您评论的第二部分有点误导。
char的数量和 C 中的“大小”是一回事。 -
@JensGustedt 我试图将它与使用
malloc()的方式区分开来,其中将事物的数量乘以每个事物的大小以获得大小参数。strncpy的参数不是事物的数量,而是要复制的字符数。