我用代码块编写并编译了这个程序:
#include <stdio.h>
#include <stdlib.h>
int main() {
char myChar[155];
scanf("%s", myChar);
printf("%sn", myChar);
return 0;
}
我已经尝试了很多东西,但由于某种原因,当你输入一个字符串与一个以上的单词,控制台只输出第一个单词。这是编译器的错误还是我在这里做错了什么?
切换到
scanf("%154[^n]", myChar);
154
避免缓冲区溢出-[^n]
扫描直到一个新的行。
或者更好,使用fgets
并去掉尾随的新行:
if (fgets(myChar, sizeof myChar, stdin))
{
myChar[strcspn(myChar, "n")] = ' ';
}
注意scanf
和fgets
可能会失败,在这种情况下,您最终会打印一个未初始化的值(未定义的行为),为了避免标准输入的问题,始终初始化您的字符串:
char myChar[155] = "";