Printf 仅从 c 中的 scanf 输入打印一个单词

Printf only printing one word from scanf input in c

我在代码块中编写并编译了这个程序:

#include <stdio.h>
#include <stdlib.h>

int main() {
    char myChar[155];
    scanf("%s", myChar);
    printf("%s\n", myChar);
    return 0;
}

我尝试了很多方法,但由于某种原因,当您输入一个包含多个单词的字符串时,控制台只输出第一个单词。是编译器的问题还是我做错了什么?

切换到

scanf("%154[^\n]", myChar);

154 以避免缓冲区溢出 - [^\n] 扫描直到换行。

或更好,使用 fgets 并删除尾随的新行:

if (fgets(myChar, sizeof myChar, stdin))
{
    myChar[strcspn(myChar, "\n")] = '[=11=]';
}

请注意 scanffgets 可能会失败,在这种情况下您最终会打印未初始化的值(未定义的行为),以避免标准输入出现问题总是初始化您的字符串:

char myChar[155] = "";