免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2407 | 回复: 5
打印 上一主题 下一主题

终端输入错误,如何修改 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-13 22:56 |只看该作者 |倒序浏览
程序运行时需要从终端获取参数,使用scanf("%s",buf);
但是当输入出错时,就无法修改。
即想输入user时
  输入了uzer时,如何退回修改。

编程时需要设置什么东西?

论坛徽章:
0
2 [报告]
发表于 2009-12-14 00:18 |只看该作者
原帖由 skywh_2001 于 2009-12-13 22:56 发表
程序运行时需要从终端获取参数,使用scanf("%s",buf);
但是当输入出错时,就无法修改。
即想输入user时
  输入了uzer时,如何退回修改。

编程时需要设置什么东西?

问题补充:

前文中修改了termios的属性:
为了输入密码不可见
设置c_lflag &= !ECHO
输入密码后,即scanf()后

又设置c_lflag |= ECHO

就出现了后来输入无法退回修改错误。
请给予帮助!

论坛徽章:
0
3 [报告]
发表于 2009-12-14 01:06 |只看该作者
你的问题我没大明白,不过
设置c_lflag &= !ECHO
这句不太对吧
应该是c_lflag &= ~ECHO
你如果设置c_lflag &= !ECHO的话,不是把c_lflag清0了?

论坛徽章:
0
4 [报告]
发表于 2009-12-14 08:45 |只看该作者

回复 #2 skywh_2001 的帖子

你用的是什么终端?超级终端?

论坛徽章:
0
5 [报告]
发表于 2009-12-14 09:29 |只看该作者

回复 #3 CMAX 的帖子

确实设置了c_lflag &= !ECHO

问题已经解决,先取出原有的c_lflag的值,完成操作后重新赋给它。
只是c_lflag的原值是哪些,还没搞清楚。

论坛徽章:
0
6 [报告]
发表于 2009-12-14 11:01 |只看该作者

回复 #5 skywh_2001 的帖子

先取出这个值保存起来,然后完成操作后来恢复,这个办法不太好。不过可以暂时解决问题。
期待完整的解决  删除字符 终端控制的解决方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP