百科问答小站 logo
百科问答小站 font logo



C 语言用 换行后就无法再回到上一行了吗? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

仅用标准C库函数的是不支持的,因为标准库函数没有提供一套“通用”的方法。

用e或者33或者ASCII码27都是用的ANSI escape sequence来实现的(有些地方叫ANSI Color),前提是控制台支持这种语法,Windows的默认的命令行窗口就不支持,有些TTY工具还要额外设置才能支持(比如secureCRT)。

百度ANSI Color就能搜出来相关的用法,比如:

控制台ANSI Color的表示和用法-zhangsanji-ChinaUnix博客

或者

ANSI Escape Codes

对应的技术标准是ISO/IEC 6429。

有人可能会说Telnet能支持这种控制符号,但这种支持是telnet实现的,Windows自己的CMD.EXE并不支持。

VS环境下,Windows控制台只能使用SetConsoleCursorPosition来设置光标:

Turbo C是gotoxy函数。

总之,没有通用的办法,根据自己代码的运行平台使用对应的API来实现。




user avatar   valk-13 网友的相关建议: 
      

可以的,有一个特殊的转义字符 e (ASCII-27)可以做到任意行列的写,前提是你运行程序的terminal要支持,不过目前来看常见的terminal貌似都支持(cmd和powershell抽风不显示的时候请在程序里面写上system("chcp 65001"))。

更正:

  1. 评论区@Richard Yu 提到了cmd和ps本身是命令行程序,并不是终端,终端窗口由conhost提供,需要开启vt processing。微软对控制台虚拟终端有相关的文档如下:

2. VS里面不支持e的话请使用33 (感谢 @通配符 ),33其实就是八进制的27。

e 不仅可以对横向和纵向文字进行排版,还能进行彩色的文字输出,包括文字的底色和背景色,以及一些特殊闪烁(闪烁等效果需要终端支持,有的终端是没有这个效果的)。

e[xm 可以改变输出的文字的各种颜色,可以使用分号进行分隔,实现同时修改背景色与文字底色,分隔的写法:e[x;y;zm ,恢复到默认格式则需要输出e[0m

每个terminal颜色会有所不同:

控制行列的则每个终端的行为一致,其中有这么一些:

       "ec"     // 清屏,类似system("cls") system("clear"),但是比system这个要快很多 "e[x;yH" // 光标移动到第x行第y列,在输出这个字符串之后,你输出别的内容,就会从光标处开始 "e[s"    // 记录光标位置 "e[u"    // 恢复光标位置      

最后两个我没有实测过,自己实际只用过ece[0;0H 用于在一个限定的区域刷新输出内容。


user avatar   pansz 网友的相关建议: 
      

可以,也不可以。

语言标准库提供的方法通常都必须是跨平台的,也就是说 C 语言本身不绑定自己的平台。因此,但凡一个特性没有以跨平台的方式实现,它就不能进入 C 标准库。(跑个题:比如我们会看到在 Linux 下编程常用的的 <unistd.h> 这个头文件,它其实提供了很多的操作系统标准功能,但它不在 C 标准库内,因为它不是跨平台的。)

而对于屏幕光标移动相关的功能,各平台并没有统一的规则与接口,所以没有直接提供在 C 语言标准库内。

要想实现,方法有两个,一是引用一个支持文本界面光标操作位置操作的库。二是查阅当前平台标准,自行实现相关功能。比如说 ANSI esc 符号这些机制本质上是针对特定平台的控制码,它在特定平台(POSIX终端)内可以生效,而且输出esc控制码并不需要用到标准库以外的功能。这两个方法确实也都可以用 C 语言实现。第一种方法需要引入第三方库,第二种方法不引入第三方库。当然,无论哪种方法,都无法做到完全意义上的跨平台。

所以答案是,C语言可以实现。不过具体实现的方式局限于你的目标平台环境。




  

相关话题

  如何格式化代码能够将类成员/函数的名字对齐? 
  请问#define PI 3.1416比float pi=3.1416有什么优势呢? 
  为什么我的代码运行后总是会变位? 
  如何评价 mimalloc? 
  程序员应该如何优雅地关闭电脑? 
  C 语言float和double哪个算得快? 
  程序员如何简单易懂的向老板解释架构的重要性? 
  为什么这两年没再听说有什么大规模的电脑病毒爆发? 
  打字速度对编程的影响大吗? 
  代码全是调包的,怎么申请专利? 

前一个讨论
为什么会有 U 盘独个文件不可以超过 4GB 这种设定?
下一个讨论
为什么会有win10家庭中文版?不是有简体中文语言包吗?为什么还会推出这个系统?





© 2024-05-18 - tinynew.org. All Rights Reserved.
© 2024-05-18 - tinynew.org. 保留所有权利