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

use*_*507 1 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);
Run Code Online (Sandbox Code Playgroud)

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

member: 1
Run Code Online (Sandbox Code Playgroud)

我想要打印出来

member: 1234567
Run Code Online (Sandbox Code Playgroud)

Eri*_*rik 6

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

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


Tre*_*ent 6

会员应声明为:

char member[8];
Run Code Online (Sandbox Code Playgroud)

char * member[8];
Run Code Online (Sandbox Code Playgroud)

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