精华内容
下载资源
问答
  • C语言printf控制光标位置和清空屏幕
    千次阅读
    2018-05-21 14:38:15

    控制光标位置:

    void locateCursor(const int row, const int col){
        printf("%c[%d;%dH",27,row,col);
    }

    清空屏幕:

    void clearScreen(){
        printf("\e[1;1H\e[2J");
    }

    测试:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void locateCursor(const int row, const int col){
        printf("%c[%d;%dH",27,row,col);
    }
    void delay(unsigned int xms)  
    {
        unsigned int x,y;
        for(x=xms;x>0;x--)
            for(y=1000000;y>0;y--);
    }
    int main()
    {
        int i=0;
        system("clear");
        do{
            locateCursor(1,10);
            printf("%3d%%\n",i);
            delay(10);
            
        }while(i++<100);
    
    }

    结果:


    更多相关内容
  • 在标准的C语言中,没有所谓的清屏函数的,特别是部分清屏C语言它只是一个标准,只有标准的输入/输出函数而你要的菜单/清屏功能,必须调用系统的函数才能实现(不同系统用户界面设计方式是不同的)如在windows下面,清屏一般...

    在标准的C语言中,没有所谓的清屏函数的,特别是部分清屏

    C语言它只是一个标准,只有标准的输入/输出函数

    而你要的菜单/清屏功能,必须调用系统的函数才能实现(不同系统用户界面设计方式是不同的)

    如在windows下面,清屏一般用

    system("cls");

    而在linux下,它就没有用了,要用

    system("clear");

    而部分清屏,在windows下可以用

    void gotoxy(int x, int y) //位置函数

    {

    COORD pos;

    pos.X = x;

    pos.Y = y;

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);

    }

    void clr_scr(int w,int h) //部分清屏,w,h为清除的宽/高

    {

    int i,j;

    for(i=0;i

    for(j=0;j

    {

    gotoxy(i,j);

    printf(" ");

    }

    }

    而完整的部分清屏程序如下

    #include

    #include

    #include

    void gotoxy(int x, int y) //位置函数

    {

    COORD pos;

    pos.X = x;

    pos.Y = y;

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);

    }

    void clr_scr(int w,int h)

    {

    int i,j;

    for(i=0;i

    for(j=0;j

    {

    gotoxy(i,j);

    printf(" ");

    }

    }

    int main()

    {

    int i,j,c;

    for(i=0;i<20;i++)

    {

    for(j=0;j<119;j++)

    printf("@");

    printf("\n");

    }

    clr_scr(80,10);

    gotoxy(1,20);

    }

    结果

    61003f36fa31e98a4f88541f9fe20ddc.png

    展开全文
  • 2007-08-17#include "stdio.h"void main(){int a=3, b=4;printf("a=%d,b=%d\n",a,b);change(a,b);printf("a=%d,b=%d\n",a,b);}void change(int x,int y){int t;printf("x=%d,y=%d\n",x,y);t=x;x=y;...

    d751c3f76824b043492ca4d4f76d0aab.png

    2007-08-17

    #include "stdio.h"

    void main()

    {int a=3, b=4;

    printf("a=%d,b=%d\n",a,b);

    change(a,b);

    printf("a=%d,b=%d\n",a,b);}

    void change(int x,int y)

    {int t;

    printf("x=%d,y=%d\n",x,y);

    t=x;x=y;y=t;

    printf("x=%d,y=%d\n",x,y);}

    编译的时候,main函数里用到change函数但是找不到change函数的定义,所以出错。

    把main函数和change函数的位置换一下就可以了。

    #include "stdio。h"

    void change(int x,int y)

    {int t;

    printf("x=%d,y=%d\n",x,y);

    t=x;x=y;y=t;

    printf("x=%d,y=%d\n",x,y);}

    void main()

    {int a=3, b=4;

    printf("a=%d,b=%d\n",a,b);

    change(a,b);

    printf("a=%d,b=%d\n",a,b);}

    或者,在main(...全部

    编译的时候,main函数里用到change函数但是找不到change函数的定义,所以出错。

    把main函数和change函数的位置换一下就可以了。

    #include "stdio。h"

    void change(int x,int y)

    {int t;

    printf("x=%d,y=%d\n",x,y);

    t=x;x=y;y=t;

    printf("x=%d,y=%d\n",x,y);}

    void main()

    {int a=3, b=4;

    printf("a=%d,b=%d\n",a,b);

    change(a,b);

    printf("a=%d,b=%d\n",a,b);}

    或者,在main()的上面或main函数里调用change之前加上change函数的函数声明也可以。

    #include "stdio。h"

    void change(int x,int y); // change函数的函数声明

    void main()

    {int a=3, b=4;

    printf("a=%d,b=%d\n",a,b);

    change(a,b);

    printf("a=%d,b=%d\n",a,b);}

    void change(int x,int y)

    {int t;

    printf("x=%d,y=%d\n",x,y);

    t=x;x=y;y=t;

    printf("x=%d,y=%d\n",x,y);}

    #include "stdio。

    h"

    void main()

    {int a=3, b=4;

    printf("a=%d,b=%d\n",a,b);

    void change(int x,int y); // change函数的函数声明

    change(a,b);

    printf("a=%d,b=%d\n",a,b);}

    void change(int x,int y)

    {int t;

    printf("x=%d,y=%d\n",x,y);

    t=x;x=y;y=t;

    printf("x=%d,y=%d\n",x,y);} 。

    收起

    展开全文
  • 对于输出操作,清空缓冲区会使得缓冲区中的所有数据立即显示到屏幕上;很明显,这些数据没有地方存放了,只能输出了。 对于输入操作,清空缓冲区就是丢弃残留字符,让程序直接等待用户输入,避免引发奇怪的行为。 ...

    缓冲区的优点很明显,它加快了程序的运行速度,减少了硬件的读写次数,让整个计算机变得流畅起来;但是,缓冲区也带来了一些负面影响,经过前面几节的学习相信读者也见识到了。

    那么,该如何消除这些负面影响呢?思路其实也很简单,在输入输出之前清空(刷新)缓冲区即可:

    • 对于输出操作,清空缓冲区会使得缓冲区中的所有数据立即显示到屏幕上;很明显,这些数据没有地方存放了,只能输出了。
    • 对于输入操作,清空缓冲区就是丢弃残留字符,让程序直接等待用户输入,避免引发奇怪的行为。
    本节的代码用到了一些暂时没有学到的知识,估计很多初学者会不理解,没关系,那就先记住吧,记不住就复制吧,总之,按照葫芦画瓢就完了。

    清空输出缓冲区

    清空输出缓冲区很简单,使用下面的语句即可:

    fflush() 是一个专门用来清空缓冲区的函数,stdout 是 standard output 的缩写,表示标准输出设备,也即显示器。整个语句的意思是,清空标准输出缓冲区,或者说清空显示器的缓冲区。

    Windows 平台下的 printf()、puts()、putchar() 等输出函数都是不带缓冲区的,所以不用清空,下面的代码演示了如何在 Linux 和 Mac OS 平台下清空缓冲区:

    程序运行后,第一个 pirntf() 立即输出,等待 5 秒以后,第二个 printf() 才输出,这就符合我们的惯性思维了。如果不加fflush(stdout)语句,程序运行后,第一个 printf() 并不会立即输出,而是等待 5 秒以后和第二个 scanf() 一起输出(已在《C语言数据输出大汇总以及轻量进阶》中进行了演示),这有点不符合我们的思维习惯。

    清空输入缓冲区

    首先,很遗憾地说,没有一种既简洁明了又适用于所有平台的清空输入缓冲区的方案。只有一种很蹩脚的方案能适用于所有平台,那就是将输入缓冲区中的数据都读取出来,但是却不使用。

    大家不要以为我很轻松地就能说出这句话,我翻墙查阅了很多英文资料,又测试了很多平台和编译器才敢说的。

    我们先说两种通用的方案,虽然它很蹩脚,但是却行之有效。

    1) 使用 getchar() 清空缓冲区

    getchar() 是带有缓冲区的,每次从缓冲区中读取一个字符,包括空格、制表符、换行符等空白符,只要我们让 getchar() 不停地读取,直到读完缓冲区中的所有字符,就能达到清空缓冲区的效果。请看下面的代码:

    该代码不停地使用 getchar() 获取缓冲区中的字符,直到遇见换行符\n或者到达文件结尾才停止。由于大家所学知识不足,这段代码暂时无法理解,我也就不细说了,在实际开发中,大家按照下面的形式使用即可:

     输入示例:

    按下第一个回车键后,只有第一个 scanf() 读取成功了,第二个 scanf() 并没有开始读取,等我们再次输入并按下回车键后,第二个 scanf() 才开始读取,这就符合我们的操作习惯了。如果没有清空缓冲区的语句,按下第一个回车键后,两个 scanf() 都读取了,只是第二个 scanf() 读取失败了,让人觉得很怪异,这点已在《使用scanf从键盘输入数据》中进行了演示。

    改变输入方式,再次尝试一下:

    你看,第一次输入的多余内容并没有起作用,就是因为它们在第二个 scanf() 之前被清空了。

    这种方案的关键之处在于,getchar() 是带有缓冲区的,并且一切字符通吃,或者说一切字符都会读取,不会忽略。不过这种方案有个缺点,就是要额外定义一个变量 c,对于有强迫症的读者来说可能有点难受。 

    2) 使用 scanf() 清空缓冲区

    scanf() 还有一种高级用法,就是使用类似于正则表达式的通配符,这样它就可以读取所有的字符了,包括空格、换行符、制表符等空白符,不会再忽略它们了。并且,scanf() 还允许把读取到的数据直接丢弃,不用赋值给变量。

    请看下面的语句:

    第一个 scanf() 将逐个读取缓冲区中\n之前的其它字符,% 后面的 * 表示将读取的这些字符丢弃,遇到\n字符时便停止读取。由于所有从键盘的输入都是以回车结束的,而回车会产生一个\n字符,此时,缓冲区中尚有一个\n遗留,第二个 scanf() 再将这个\n读取并丢弃,这里的星号和第一个 scanf() 的星号作用相同。所以将\n连同它之前的字符全部读取并丢弃之后,也就相当于清除了输入缓冲区。

    相信很多读者都不明白这种写法,没关系,下节我们在讲解 scanf() 的高级用法时还会再解释。

    我们来演示这种方案的效果:

     输入示例 ①:

     输入示例 ②:

    相比使用 getchar(),这种方案不用额外定义一个变量,看起来更加整洁。

    展开全文
  • 本程序实现屏幕的清理,并将清理的内容保存于内存中,然后再从内存取出以恢复屏幕的内容
  • 转自:... C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 char *fget...
  • C语言清空缓存区方法

    2019-11-03 23:43:39
    所以以上这个错误程序中内存缓冲区没有被清空,每次输入一个字母再回车时,缓冲区中有一个字母和一个’\n’,因此会两次进入循环,第一次判断字母,第二次判断’\n’,后来上网搜了一下,C语言清空缓冲区最好这么...
  • C语言下的清屏函数

    万次阅读 多人点赞 2015-08-30 10:19:41
    http://blog.csdn.net/lopper/article/details/5062960 头文件:stdlib.h函数:system(“cls”);
  • 如何实现逐字或逐条打印??? 首先我们要先了解几个库函数 ...比如清空屏幕的指令: system("cls"); 执行到这一段代码就清空整个屏幕 这里的意思是执行“cls”这个命令,而system是一个库函数,
  • C语言 清空输入缓冲区的方法

    千次阅读 2017-09-27 13:00:16
    ,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符...
  • 经常我们想在屏幕上看一个结果或输入内容的时候,却不等待你输入就结束了,此时就需要刷新输入缓冲区。题目:先来看一个栗子:实现登录时确认密码,输入Y即确认成功,N表示放弃确认。int main(){char password[20] =...
  • C++控制台清屏函数

    千次阅读 多人点赞 2021-04-16 19:42:29
    头文件加入#include<stdlib.h> 程序内调用system(“cls”); 清屏。
  • 1:本短文介绍三种方式清除C语言编译时printf的缓存:第一种:setbuf(stdin,NULL);头文件:include第二种:__fpurge(stdin);(相当于Unix下面的fflush()。)头文件:include第三种:while((c=getchar())!='\n'&&...
  • 有的时候会遇到这样的一个问题,程序如下 #include int main(void) { int a; char b; scanf("%d".&a); scanf("%c",&b);... 另外,还可通过加__fpurge(stdin)函数清空输入缓冲区,此函数在头文件中。
  • 2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。 3)存储:即将通讯录信息保存在一个文件中。 4)装入:即将文件中的信息读入程序。 5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、...
  • 本章节讲如何使用printf打印不同形式的内容,printf是c语言里常用的打印接口,也是c标准函数库,使用时需要#include ,下面讲讲如何使用printf:一、printf 的基础知识:1、printf常用打印规定符:%d 打印十进制有...
  • C语言文件操作函数

    2021-05-23 03:48:31
    这显然不能满足我们的要求,C语言提供了移动文件指针和随机读写的函数,它们是: (1).移动文件指针函数: long ftell(FILE *stream); int rewind(FILE *stream); fseek(FILE *stream,long offset,int origin); 函数...
  • C语言图形模式设置通信2006级程序实习任务书实习一 键盘访问控制一、实习目的1、掌握C语言中键盘访问控制;2、掌握常用控制键的键值二、相关知识1、kbhit()函数包含在头文件conio.h中,检测是否有按键动作。2、...
  • 贪吃蛇(C语言实现)

    万次阅读 多人点赞 2021-08-17 20:47:21
    //清空屏幕 color(7); //颜色设置为白色 CursorJump(2 * (COL / 3), ROW / 2 - 3); if (grade > max) { printf("恭喜你打破最高记录,最高记录更新为%d", grade); WriteGrade(); } else if ...
  • C语言缓冲区(缓存)详解 缓冲区(Buffer)又称为缓存(Cache),是内存空间的一部分。也就是说,在内存中 预留了一定的存储空间,用来暂时保存输入或输出的数据,这部分预留的空间就叫做缓冲 区。 缓冲区根据其对应...
  • system(cls)用system(clear)也不行
  • } } else if( location == 4 )/*选项——使用说明*/ { a_word_printf("●本程序由奥利奥制作[C语言控制台版],其实在此之前我已经做过刷屏器的窗" "口版,为了方便初学者学习,才做出控制台版的.有需要源码的小伙伴...
  • 俄罗斯方块(C语言实现)

    万次阅读 多人点赞 2021-08-13 17:30:35
    文章目录游戏说明游戏效果展示游戏代码游戏代码详解游戏框架构建隐藏光标光标跳转初始化界面初始化方块信息颜色设置画出方块空格覆盖合法性判断游戏主体逻辑函数判断得分与结束主函数 游戏说明 ...
  • 虽然可以用来清屏,但需要循环调用时会发现屏幕一闪一闪的,视觉感很不好。接下来我分享一个清屏函数,另加详细注释,没有一闪一闪的效果,看起来更美观,用C语言写游戏时常用到。 #include <windows.h> void ...
  • 数据结构C语言版,单链表操作的菜单式实验,包括单链表的初始化、创建、求表长、插入删除元素、销毁和清空单链表等操作,具体操作根据屏幕提示进行。
  • 如何在C中清除控制台?

    千次阅读 2021-05-19 11:06:55
    有几种清除控制台或输出屏幕的方法,其中一种是clrscr()方法。当函数调用时,它将清除屏幕。在“ conio.h”头文件中声明。还有一些其他方法,例如system(“ cls”)和system(“ clear”),它们在“ stdlib.h”头文件...
  • [](https://box.kancloud.cn/2016-08-24_57bd6b1a1b68d.jpg)用C语言实现俄罗斯方块,需要先解决下面几个问题:**1、如何用C语言绘制图形界面**EasyX图形库(http://www.easyx.cn)即TC的图形库在VC下的移植。...
  • 如果我们当前屏幕很乱,那么怎么刷新清屏呢?Linux下主要有4个命令,各自用法是什么?那么linux下的清屏要怎么办呢?下面由学习啦小编为大家整理了linux的清屏命令的相关知识,希望对大家有帮助!linux的清屏命令总结...
  • C语言各种编译器的清屏方法

    千次阅读 2012-09-28 11:04:42
    1,vs/vc:vs本身并没有提供专用清屏的函数,但是清屏被作为windows专用的可执行程序了,因此可以使用system("cls")来手动开启进程完成清屏。 2,tc:清屏函数clrscr() 总结:在windows下无论你使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,519
精华内容 3,807
关键字:

c语言清空屏幕

友情链接: 201062423382956.rar