如何解决printf 只从 c 中的 scanf 输入打印一个单词
我在代码块中编写并编译了这个程序:
#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")] = '\0';
}
请注意,scanf
和 fgets
可能会失败,在这种情况下,您最终会打印未初始化的值(未定义的行为),以避免标准输入出现问题始终初始化您的字符串:
char myChar[155] = "";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。