【问题标题】:Can't put a space between output and input on the same line不能在同一行的输出和输入之间放置空格
【发布时间】:2021-05-01 15:00:00
【问题描述】:

打印后,如果我写下我得到的名字:

插入一个名字:Andrea

Andrea 之前没有空格,即使我将空格放在输出中。写名字前怎么加空格?

#include <stdio.h>

int main() {
    int string[8];
    printf("\nInsert a name : ");
    printf(" ");
    scanf("%s", string);
    printf("\nThe name is : %s", string);
    return 0;
}

【问题讨论】:

  • 不清楚你在做什么。 printf 语句中的所有这些空格都将在任何“正常”C 环境中打印。你怎么运行这个?这是我运行您的确切代码的输入/输出行:Insert a name : something - 请注意冒号后的两个空格,如预期的那样。

标签: printf scanf c99


【解决方案1】:

您提供的代码无法编译,因为变量string 是一个整数数组(而不是您可能认为的字符串)。当你输入它的值时,你告诉编译器期待一个字符串(scanf("%s", string") 中的"%s")。

将您的string 声明更改为char string[8],它应该可以工作(使用您想要的间距):

请注意,string 中的值不会超过 8 个字符。

【讨论】:

  • 我把 int 改成了 char 但在输入前还是不能得到空格
  • 您能否提供一张截图说明发生了什么?因为我刚刚编译了程序,它工作得很好
  • 我刚刚添加了截图
  • 尝试从终端执行,可能是IDE?
  • 我用终端试过了,效果很好。谢谢!这是因为 CLion。
【解决方案2】:

实际上,您在code 中犯了一个小错误,您将string 声明为array of int & 从代码scanf("%s", string")compiler 期望从user 输入@987654329 @ 因为它包含%s 作为format specifier。因此,代码不会compile

为了更正这个问题,您应该将字符串声明为char string[8](包含 8 个字符的字符串)。

correct code 如下:

#include <stdio.h>

int main() {
    char string[8];
    printf("\nInsert a name : ");
    scanf("%s", string);
    printf("\nThe name is : %s", string);
    return 0;
}

通过上述修正,您的输入和输出之间的空间问题将得到解决!

这里是从这次更正中收到的output

希望这个解释对你有所帮助!

如果仍有任何问题,请随时在comments 中提问! ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多