免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
31 [报告]
发表于 2011-10-26 21:51 |只看该作者
回复 28# AD8018

>> 在vc下编译,通过此终端代替cmd.exe运行,也可以看到效果
>> http://software.jessies.org/terminator/

UTF-8 - Terminator won't mangle your favorite accented characters, ...

这个帅了……
cmd.exe 各种烂……  Windows的同学都懂的……

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
32 [报告]
发表于 2011-10-26 22:08 |只看该作者
好个pmerofc啊,人家楼主问的是怎么实现退格之类的,以控制输出位置,你这倒好,上来就七扭八扯:

先鸡蛋里挑骨头的指责楼主,贬低下楼主以抬高自己:

    这段代码最大的毛病其实不是printf(),而是:
   1.不恰当地使用外部变量,这破坏了整个代码的结构。最坏的就是那个k
   2.kcpjf()这个函数很不规范,参数不足。而且与外部变量自相矛盾


比较搞的就是楼主没看破你,反而回:
谢谢!
如何在scanf接收键盘输入值"100"回车后.用printf函数 输入100值的上一行中显示出 100+100的值


楼主目标比较坚定,就是要问这个怎么实现指定位置输出的问题,pmerofc装了半天高手了,也不好意思不回,于是就支支吾吾的来了句:

  就一般的情况来说,没有这种东西。个别编译器提供这种库函数,比如DOS下的TC



看了没有,这就是pmerofc的真实水平和观点:
1) 编译器提供库函数
2) 编译器决定了能否控制输出位置

于是别人实在看不下去了,就指出:

能否实现全屏幕编辑/显示,取决于OS/驱动/API,跟编译器毛关系都没有



可是pmerofc呢,都点到这份上了,还是傻乎乎的不明白,于是还反问人家:

我指的是编译器是否提供这种库函数,这有什么问题吗


pmerofc此话一出,晕倒一片。于是又有明白人告诉他:

编译器就是编译器,跟实现全屏幕显示的库有啥关系。天天C解毒,不会这个都不清楚吧?



pmerofc还挺嘴硬,死不承认,打死也要装高手,于是还辩驳:
编译器确实是一个不很准确的通俗称谓,准确的说法是实现。实现未必提供这种功能。这有什么不对的吗




实在无语了.........................

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
33 [报告]
发表于 2011-10-26 23:23 |只看该作者
回复 32# 塑料袋

我也很无语,一直觉得解决C问题,得多多少少了解一些C的编译链接过程,多多少少了解一些不同编译器实现的方言。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
34 [报告]
发表于 2011-10-27 02:22 |只看该作者
本帖最后由 yinyuemi 于 2011-10-27 02:28 编辑

回复 20# huangzhenfan


    大概意思:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <winbase.h>

  5. float a[10][5],k,m;
  6. int i,j;

  7. void kcpjf (float a[][5])
  8. {
  9.         printf ("AVE:");
  10.         for(j=0;j<5;j++)
  11.                 {k=0;
  12.                         for(i=0;i<10;i++)
  13.                                 k+=a[i][j];
  14.                         printf ("\t%.2f",k/10);
  15.                 }
  16. }

  17. int main(void){
  18.     HANDLE   hStdout;     
  19.     COORD     cursorPos;
  20.         hStdout   =   GetStdHandle(STD_OUTPUT_HANDLE);  
  21.         
  22.         int x=8,y=2;
  23.         printf ("please insert .....\n");
  24.         printf ("TABLE:\t1\t2\t3\t4\t5\tAVE\n");
  25.         for(i=0;i<10;i++)
  26.                 {k=0;
  27.                 printf ("std%d:\t",i+1);
  28.                 {for(j=0;j<=5;j++)
  29.                         {if(j==5){
  30.                                 cursorPos.X   =   x;
  31.                                 cursorPos.Y   =   y;
  32.                                 SetConsoleCursorPosition(   hStdout,   cursorPos   ); //输出定位
  33.                                 printf ("%.2f\n",k/5);break;
  34.                                 }
  35.                         scanf ("%f",&a[i][j]);
  36.                         k+=a[i][j];
  37.                         x+=8;
  38.                         }
  39.                 }
  40.                 y++;
  41.                 x=8;
  42.         }
  43.         kcpjf(a);
  44.         getch();
  45.         return;
  46. }

复制代码


另: 如是unix平台,也可以使用printf("\e[y;x;H")控制光标位置

论坛徽章:
0
35 [报告]
发表于 2011-10-27 03:11 |只看该作者
就一般的情况来说,没有这种东西。个别编译器提供这种库函数,比如DOS下的TC
pmerofc 发表于 2011-10-26 12:25


栽了栽了栽了,书的销量锐减啊,超老潭纪录无望啊。

论坛徽章:
0
36 [报告]
发表于 2011-10-27 08:14 |只看该作者
这儿是C/C++版么?这儿是论坛么?你们说的都是汉语么?

如果都是汉语为啥你们不能对话?

你们能够鸡同鸭讲,我上这儿来可不是看鸡和鸭子的。

论坛徽章:
0
37 [报告]
发表于 2011-10-27 09:00 |只看该作者
回复 1# huangzhenfan


    你把命令行窗口放大点。

论坛徽章:
0
38 [报告]
发表于 2011-10-27 09:20 |只看该作者
回复 33# mirnshi


    printf()属于标准库函数,而标准库函数的功能由C标准定义,所以严格来说C标准库是C编译器实现的一部分,说编译器实现提供printf()对终端控制的支持程度是说的过去的。

当然很多标准库函数最终都会调用系统API,系统API又会调用终端的驱动,驱动再读写寄存器(某些显示设备是不支持回显的,所以就算你的printf()函数怎么支持回到上一行的功能也没用)。

论坛徽章:
0
39 [报告]
发表于 2011-10-27 09:39 |只看该作者
本帖最后由 三月廿七 于 2011-10-27 09:42 编辑
回复  mirnshi


    printf()属于标准库函数,而标准库函数的功能由C标准定义,所以严格来说C标准库是 ...
x5miao 发表于 2011-10-27 09:20


c 标准只定接口, 不定实现,具体的实现是由特定的操作系统完成。
编译器不负责接口的实现, 只负责接口的翻译。

论坛徽章:
0
40 [报告]
发表于 2011-10-27 09:54 |只看该作者
标准规定printf输出什么字符,
系统和终端软件,决定收到这些字符后,按什么方式展示,用什么字体、字符多大、颜色、位置等等。。
完全两码事。

某人的认识层次,不要堕落到和“解毒专家” 一样的地步。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP