我在与函数strncpy困难。 我试图在一分为二的8个字符的字符串(前6个字符中一个子串,然后剩余的2个字符中的另一个)。 为了说明我已经简化了我的代码以下的特殊困难:
include stdio.h
include stdlib.h
include string.h
define MAXSIZE 100
struct word {
char string[8];
char sub1[2];
char sub2[6];
};
typedef struct word Word;
int main(void)
{
Word* p;
p=(Word*)malloc(MAXSIZE*sizeof(Word));
if (p==NULL) {
fprintf(stderr,"not enough memory");
return 0;
}
printf("Enter an 8-character string: \n");
scanf("%s",p->string);
strncpy(p->sub2,p->string,6);
strncpy(p->sub1,p->string,2);
printf("string=%s\n",p->string);
printf("sub1=%s\n",p->sub1);
printf("sub2=%s\n",p->sub2);
free(p);
return 0;
}
用户被提示为输入。 假设他们输入“12345678”。 然后该程序的输出是:
string=1234567812123456
sub1=12123456
sub2=123456
我期待将如下的输出:
string=12345678
sub1=12
sub2=123456
我不明白怎么strncpy()函数似乎是附加的数字串......显然我不明白strncpy()函数不够好,但任何人都可以向我解释这是怎么回事?