私はstrncpyで問題があります。私は8文字の文字列を2つに分割しようとしています(最初の6文字を1つの部分文字列に、残りの2文字を別の文字列に分割します)。ユーザーが入力を求めるプロンプトが表示されstrncpy質問(C言語)
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を理解していないが、誰も私に何が起こっていることを説明することができますか?
あなたは確かにそのmallocキャストを取り除きたいです! http://c-faq.com/malloc/mallocnocast.html – user502515