【问题标题】:Printing out a string from a char array in C从C中的char数组中打印出一个字符串
【发布时间】:2017-11-20 08:08:30
【问题描述】:

我正在学习 C 编程,但在打印存储在 char 数组中的名称时遇到了一些问题。

char nameArr[125];
for (int i = 0; i < 125; i++)
{
    if (nameArr[i] != "\0")
    {
        printf(nameArr[i]);
    }
    else
    {
        i = 125;
    }
}

这是我的代码,我在其中尝试打印出我已经存储在 char 数组中的“Joe Doe”之类的名称,但是当我运行它时,编译器中出现了一些错误。 如果我不打算这样做,我如何只打印名称而不是数组的所有 125 个插槽?

【问题讨论】:

  • printf(nameArr[i] 看到这里有问题吗?
  • for 循环头中的冒号 (:) 做了什么?
  • 现在您遇到了一个严重的错误,您将nameArr[i] 视为printf()格式字符串
  • 看来你可能需要a couple of good beginners books
  • 而不是这篇文章 i = 125; 只需使用 break

标签: c arrays for-loop printf


【解决方案1】:

假设您的nameArr 已经包含一个字符串,它被定义为以0 结尾的字符序列,那么明显 的解决方案就是这样做

printf("%s", nameArr);

puts(nameArr); // appends newline automatically

如果您的问题是如何手动执行此操作,则如下所示:

for (size_t i = 0; nameArr[i]; ++i)
{
    putchar(nameArr[i]);
    // or printf("%c", nameArr[i]);
}
只要这个 不是 0 字节,

nameArr[i] 评估为真。此外,始终使用size_t 表示数组索引。 int 不保证可以容纳 C 中的对象可以具有的任何大小。

【讨论】:

  • 感谢您的解释!我想我现在明白了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 2018-01-28
  • 2021-01-13
  • 2021-11-01
  • 1970-01-01
  • 2019-02-14
相关资源
最近更新 更多