免费注册 查看新帖 |

Chinaunix

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

[C] 删除一个汉字时屏幕上显示只删除了半个汉字的问题 [复制链接]

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19CU十二周年纪念徽章
日期:2013-10-24 15:41:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-07 13:24 |只看该作者 |倒序浏览
30可用积分
本帖最后由 shencz2000 于 2013-12-07 22:24 编辑

有一个用C语言编写的打字练习程序,这个程序能够在linux终端窗口下或者虚拟终端下使用。
运行这个程序,输入一串中文,当想删除一个已经输入的汉字时,出现一个问题:光标在屏幕
上显示删除了半个汉字,但实际上删除了一个汉字。我希望在显示上是删除一个汉字,请教一
下,这个问题怎么解决?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2013-12-07 13:58 |只看该作者
不会还是DOS的打字练习程序吧?

论坛徽章:
0
3 [报告]
发表于 2013-12-07 14:23 |只看该作者
办个汉子是什么意思?
如果是图像的一半,去研究绘图的部分。
如果是一个乱码,应该是处理\b时,字符串的指针只回退1了吧。

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
4 [报告]
发表于 2013-12-07 15:59 |只看该作者
终端程序的话, 解决方案要取决于终端。
比较通用的方法是清除最后一行,再输出\r,再输出最后一行

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19CU十二周年纪念徽章
日期:2013-10-24 15:41:34
5 [报告]
发表于 2013-12-07 22:32 |只看该作者
回复 3# lrita
关于半个汉字,是这么回事,比如先输入了一个汉字“林”,接着按一下退格键(<back space>),这时会看到“林”字少了右边的一半,但左边的一半还在。

   

论坛徽章:
0
6 [报告]
发表于 2013-12-08 11:11 |只看该作者
新手不懂,帮顶!

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
7 [报告]
发表于 2013-12-09 10:43 |只看该作者
这是许多许多年以前的问题了……

解决方案是识别相关编码,发现是汉字编码,那就每次删除两个字符。
汉字编码的标志是:第一个字节大于127.

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19CU十二周年纪念徽章
日期:2013-10-24 15:41:34
8 [报告]
发表于 2014-03-02 21:17 |只看该作者
本帖最后由 shencz2000 于 2014-03-02 21:18 编辑

回复 7# shan_ghost
你好,谢谢你的回复!
能不能说得更详细一点,这样我就能够去修改了。
当使用者按下一个键的时候,应该用什么方法来接收他按下的键值?
如何获取光标之前的字符编码?
如何控制光标往回删除两个半角字符?


   

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
9 [报告]
发表于 2014-03-03 14:35 |只看该作者
shencz2000 发表于 2014-03-02 21:17
回复 7# shan_ghost
你好,谢谢你的回复!
能不能说得更详细一点,这样我就能够去修改了。


这么问……看来你是直接用的scanf库函数?

这里有篇文章可能能帮到你:
http://linuxprograms.wordpress.c ... rint-utf-8-strings/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP