为什么 printf 只打印该数组的第一个字符而不是全部?

发布于 2024-11-05 21:47:31 字数 451 浏览 0 评论 0原文

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);

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

member: 1

和我想打印出来

member: 1234567
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);

Why would the above only print out the first char in member and not the whole 7, if i printf on member[0]/member[1]/member[2] the values are stored there but the following is printed?

i.e

member: 1

and i wanted to print out

member: 1234567

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

与君绝 2024-11-12 21:47:31

成员应声明为:

char member[8];

不是

char * member[8];

字符数组,不是字符指针数组

member should be declared as:

char member[8];

not

char * member[8];

as it is an array of chars, not an array of char pointers

空城缀染半城烟沙 2024-11-12 21:47:31

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

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

As you didn't post enough code, the following is a guess:

Your member variable is not a char[] but a wchar_t[] or MS TCHAR[]. That would make each element of the member array larger than 1 char, so when printf treats it as an array of char it'd see '1', '\0', '2', '\0' and so on - printing the first 1 then stopping on the 0-byte.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文