【问题标题】:Why is printf only printing the first char of this array and not all of them?为什么 printf 只打印这个数组的第一个字符而不是全部?
【发布时间】:2011-05-08 10:28:43
【问题描述】:
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 将值存储在那里但打印以下内容,为什么上面只打印出成员中的第一个字符而不是整个 7?

member: 1

我想打印出来

member: 1234567

【问题讨论】:

  • 向我们展示完整的代码。 tagmember 定义为什么。有wchar_t 或MS TCHAR 吗?
  • 我们需要membertag的定义。
  • 更新了!希望这会有所帮助?
  • 提高编译器的警告级别并注意警告。将 char (tag[x+15]) 分配给 char* (member[x]) 必须使您的编译器发出诊断信息。
  • 这与您的问题没有直接关系,但请确保在您的 for 循环 member 为 NULL 终止之后。

标签: c


【解决方案1】:

成员应声明为:

char member[8];

不是

char * member[8];

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      相关资源
      最近更新 更多