免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123456
最近访问板块 发新帖
楼主: huangzhenfan
打印 上一主题 下一主题

[C] 如何指定printf在屏障上的输出位置,请教大神们 [复制链接]

论坛徽章:
5
技术图书徽章
日期:2013-11-07 13:21:58技术图书徽章
日期:2013-12-07 10:34:46技术图书徽章
日期:2014-04-23 08:50:31双鱼座
日期:2014-09-16 09:12:34亥猪
日期:2015-01-23 13:37:49
51 [报告]
发表于 2011-10-27 23:19 |只看该作者
回复 50# huangzhenfan


    msdn啊,这次算你幸运有人贴代码。

论坛徽章:
0
52 [报告]
发表于 2012-07-26 11:07 |只看该作者
AD8018 发表于 2011-10-26 09:12
让语法专家们见识下无证程序员的功力!


这个方法很好用。

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
53 [报告]
发表于 2012-07-26 13:03 |只看该作者
塑料袋 发表于 2011-10-26 22:08
好个pmerofc啊,人家楼主问的是怎么实现退格之类的,以控制输出位置,你这倒好,上来就七扭八扯:

先鸡蛋 ...


笑翻了...这个给力.

论坛徽章:
5
技术图书徽章
日期:2013-11-07 13:21:58技术图书徽章
日期:2013-12-07 10:34:46技术图书徽章
日期:2014-04-23 08:50:31双鱼座
日期:2014-09-16 09:12:34亥猪
日期:2015-01-23 13:37:49
54 [报告]
发表于 2012-07-26 13:49 |只看该作者
我艹,我竟然回过这贴。

论坛徽章:
0
55 [报告]
发表于 2012-07-26 16:25 |只看该作者
这个问题没多大意义  

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
56 [报告]
发表于 2012-07-26 16:51 |只看该作者
本帖最后由 yulihua49 于 2012-07-26 17:03 编辑
huangzhenfan 发表于 2011-10-26 04:14
请高手们指点

我碰到了一个我自已无法实现的printf格式输出问题,"要pirntf在上一行上输出信息"


使用curses库。
低级一点的,使用termcap库。
它访问终端数据库,找到终端的控制指令,直接操纵终端可以实现你的要求。


printf("\033OA\r%s\n",str);试试。

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
57 [报告]
发表于 2012-07-26 19:32 |只看该作者
C呀、类UNIX呀……这一大族,都是在古早的、以打字机作为输出端的系统的基础上发展而来的。“print”这个叫法,就体现了这一点。

标准库之printf函数,基本上只是负责,将其第二个(组/表)参数,依照第一个参数即format串,输出到某个端。至于这个输出端是打字机、通讯端口、文件、还是显示器屏幕、甚至是一个抽象的输出通道,标准并不管这事儿。具体的实现依赖于具体的实现(看似一句废话)。

所以,不应该因为printf函数不能便利(直截了当)地完成某一个特殊输出环境中的实现,就认为它“弱智”。(难道还要要求它WYSIWYG?呵呵……夸张了……)

在printf函数中的format串中,可以掺和所谓“控制字符”来实现某些功能。“控制字符”是标准规定好了的,属于语言的一部分;然而,“实现某些功能”则依赖于具体的实现对前者的解释机制,语言标准不管。比如“\a”原本是让打字机“叮铃”地响一下,而到了没有打字机的环境中,如何实现类似功能,就看具体的解释机制了,比如让小汽车抖三抖以招来女主人的警觉,或者让对方家里停电停水停煤气以示警告(就像电影里演的K. D. Mitnick所干的那样)—— 这些事情,看似“直截了当”、“立竿见影”,但都需要编译器(pmerofc所讲的“实现”)、库、OS、API等等的通盘合作来实现。

在C这种通用的、不(可)依赖于具体硬件环境的语言中,语言标准一般不会为标准库设置那种越俎代庖式的功能。

但在一些跟具体应用环境非常耦合的编程语言中,通常就会有这些功能,最典型的就是BASIC语言。

在BASIC语言,至少有TAB、SPC、USING、LOCATE(尤其是这个)四种“函数”或语句,可以“直截了当”地实现楼主的需求。

以上,仅供参考,呵呵……

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
58 [报告]
发表于 2012-07-29 11:02 来自手机 |只看该作者
本帖最后由 惟吾无为 于 2012-07-29 11:07 编辑

转义序列是由终端模拟器解释的

看到楼上的回复,加上一句
的确,严格说来,编译器参与过,它把\033转换为一个字符了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP