C语言scanf_s输入字符串后敲回车后没有输出就结束了

qq_43208299 2019-08-16 12:01:00
请问这个要怎么解决呢,是什么原因,请求帮助,谢谢! 代码如下: #include<stdio.h> int main(void) { char name[20]; printf("请输入你的姓名: "); scanf_s("%s",name); printf("\"%s\"\n",name); printf("\"%20s\"\n",name); printf("\"%-20s\"\n",name); printf("\"%s \"\n",name); return 0; }
...全文
1604 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
E_stream 2019-08-17
  • 打赏
  • 举报
回复
引用 6 楼 qq_43208299 的回复:
[quote=引用 3 楼 自信男孩的回复:]scanf_s缺少一个参数,scanf_s比scanf安全,前提是第三个参数,可以确定%s字符串长度。
产什么意思,不是很明白[/quote]以上代码如果用scanf_s,第二行应改为scanf_s("%s",buf,5),表示最多读取4个字符,因为buf[4]要放'\0'。 搜一下呗,这是我挑的,scanf_s函数有三个参数,你少一个
qq_43208299 2019-08-16
  • 打赏
  • 举报
回复
引用 3 楼 自信男孩的回复:
scanf_s缺少一个参数,scanf_s比scanf安全,前提是第三个参数,可以确定%s字符串长度。
产什么意思,不是很明白
qq_43208299 2019-08-16
  • 打赏
  • 举报
回复
引用 1 楼 Italink的回复:
使用scanf_s需要设置缓冲区长度,而原来的scanf不安全就是因为很容易越界

scanf_s("%s", name,sizeof(name));
那sizeo缓冲的f长度是为上面的20吗?
qq_43208299 2019-08-16
  • 打赏
  • 举报
回复
引用 2 楼 csucxy的回复:
这个程序在运行时会报运行时错误,楼主的编译器是?
VS2012 这程序运行时没有报错,但就是没有输出字符串
自信男孩 2019-08-16
  • 打赏
  • 举报
回复
scanf_s缺少一个参数,scanf_s比scanf安全,前提是第三个参数,可以确定%s字符串长度。
csucxy 2019-08-16
  • 打赏
  • 举报
回复
这个程序在运行时会报运行时错误,楼主的编译器是?
Italink 2019-08-16
  • 打赏
  • 举报
回复 1
使用scanf_s需要设置缓冲区长度,而原来的scanf不安全就是因为很容易越界

scanf_s("%s", name,sizeof(name));

70,037

社区成员

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

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