为什么printf只打印这个数组的第一个字符而不是所有字符?

时间:2011-05-08 10:28:44

标签: c

char *member[8];
char *tag;// this points a lot of text. if i print htmtag, it works fine with a few lines of text printing out

for ( int x = 0; x < 8; x++ )
{
    member[x] = tag[x+15];
}
printf("member: %s",member);

为什么以上只会打印成员中的第一个字符而不是整个7,如果我在成员[0] /成员[1] /成员[2]上打印,则值存储在那里,但打印下面的内容?

member: 1

我想打印出来

member: 1234567

2 个答案:

答案 0 :(得分:6)

由于您没有发布足够的代码,以下是 guess

您的member变量不是char[],而是wchar_t[]或MS TCHAR[]。这会使member数组的每个元素都大于1个字符,所以当printf将它视为char数组时,它会看到'1', '\0', '2', '\0'等等 - 打印第一个1 1}}然后停在0字节上。

答案 1 :(得分:6)

成员应声明为:

char member[8];

char * member[8];

因为它是一个字符数组,而不是一个char指针数组