c语言 scanf()函数如何读入一个带空格的字符串

fxp49 2017-01-24 03:53:19
scanf()函数如何读入一个带空格的字符串
char a[20]={0};
printf("请输入: ");
scanf("%s[^\n]",a);
printf("%\ns",a);
system("pause");
运行:
请输入:I love you
I请按任意键继续…
希望的运行结果是:
请输入:I love you
I love you
请按任意键继续…
...全文
1270 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-01-25
  • 打赏
  • 举报
回复
fgets(a,20,stdin);
fxp49 2017-01-25
  • 打赏
  • 举报
回复
fgets(a,20,stdin)函数还是不行!
YapingXin 2017-01-24
  • 打赏
  • 举报
回复
还不快快用上键盘事件。。。
  • 打赏
  • 举报
回复
三楼正解
引用 3 楼 fjjfxz 的回复:
scanf函数好象本身就是把空格作为数据分隔符 想读入带空格的字符串,得用如gets()之类的函数
Grevi 2017-01-24
  • 打赏
  • 举报
回复
建议暂时使用gets()函数来完成功能 等入门后学习使用fgets()函数来完成
gets(char *string);
fgets(char * s, int n,FILE *stream);

char a[20]={0};
printf("请输入: ");
gets(a);
printf("%s",a);
system("pause");
fjjfxz 2017-01-24
  • 打赏
  • 举报
回复
scanf函数好象本身就是把空格作为数据分隔符 想读入带空格的字符串,得用如gets()之类的函数
fxp49 2017-01-24
  • 打赏
  • 举报
回复
还是不行啊! 如果是:scanf("%[^\n]%*c",a); 运行结果是: 请按任意键继续… 如果改为:scanf("%s%[^\n]%*c",a); 运行结果仍然是: 请输入:I love you I请按任意键继续…
yyyyzf 2017-01-24
  • 打赏
  • 举报
回复
scanf("%[^\n]%*c",a);%*c是用来吸收末尾的'\n'~~这样就可以了~~

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧