C语言实现程序的暂停

在C语言中有时候需要实现程序的暂停:在某一步暂停一下,或者需要实现人工控制程序进度。这个时候需要加上几个常用的函数来实现,下面有两种方法::

1> system(“pause”);
这种方法需要加上头文件

#include <stdio.h>
#include <stdlib.h>
int main(void)
{

printf("I need a pause here.\n");

system("pause");

printf("And here too.\n");

system("pause"); 。

return 0;

}

运行一下发现有两个暂停点,可以实现程序的暂停。

这里写图片描述

如果系统中没有pause这个命令,那么:

2> getchar(); 或者 cin.get();(适用于C++)

1)这个函数适用于任何系统,但是,当 getchar();/cin.get(); 前面有接收输入的语句的时候,该办法会失效。
2)如果之前没有接收任何输入,该办法是绝对有效的!

 这是因为,如果前面接收了输入,输入流中可能会有残留数据,getchar();/cin.get(); 就会直接读取输入流中的残留数据,而不会等待我们按回车。解决该问题的办法是,先清空输入流,再用 getchar();/cin.get();。清空输入流的办法如下:

1). while ( (c = getchar()) != ‘\n’ && c != EOF ) ; /* 对于 C 和 C++ */

2). cin.clear(); // 仅适用于 C++,而且还需要包含标准头文件 limits

    cin.ignore( numeric_limits<streamsize>::max(), '\n' ); 

例如: .

功能: 演示清空输入流及使用 getchar();/cin.get();
实现暂停:


#include <iostream>

#include <limits>

#include <cstdio> 。

using namespace std;

int main()

{

int i_test, c;

printf("Please enter an integer: ");

scanf("%d", &i_test);

printf("You just entered %d.\nPress enter to continue...", i_test);

while ( (c = getchar()) != '\n' && c != EOF ) ;                    // 清空输入流

clearerr(stdin);                                                   // 清除流的错误标记

getchar();                                                         // 等待用户输入回车 .

cout << "Please enter an integer: ";

cin >> i_test;

cout << "You just entered " << i_test << ".\nPress enter to continue...";

cin.clear();                                                        // 清除流的错误标记

cin.ignore( numeric_limits<streamsize>::max(), '\n' );               // 清空输入流

cin.get();                                                           // 等待用户输入回车

return 0;

} .
  • 24
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的 C 语言程序,可以在终端上放烟花: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #define WIDTH 80 #define HEIGHT 24 void clear() { printf("\033[2J\033[H"); } void sleep_ms(int ms) { struct timespec ts = {0, ms * 1000000}; nanosleep(&ts, NULL); } void print_fuse(int x, int y, int len) { for (int i = 0; i < len; ++i) { printf("\033[%d;%dH@", y - i, x); fflush(stdout); sleep_ms(50); } } void print_sparkle(int x, int y, char c) { printf("\033[%d;%dH%c", y, x, c); fflush(stdout); sleep_ms(50); } void explode(int x, int y) { char sparkles[] = ".:*"; for (int i = 0; i < 30; ++i) { char c = sparkles[rand() % (sizeof(sparkles) - 1)]; int dx = rand() % 21 - 10; int dy = rand() % 7 - 3; print_sparkle(x + dx, y + dy, c); } } int main() { srand(time(NULL)); clear(); while (1) { int x = rand() % WIDTH + 1; int y = HEIGHT; int len = rand() % 15 + 10; print_fuse(x, y, len); explode(x, y - len); } return 0; } ``` 这个程序使用 ANSI 转义序列在终端上输出字符,从而实现放烟花的效果。具体实现过程如下: 1. `clear()` 函数用于清空终端屏幕。 2. `sleep_ms(int ms)` 函数用于让程序暂停指定毫秒数,以控制烟花的爆炸速度。 3. `print_fuse(int x, int y, int len)` 函数用于打印导火线,从位置 `(x, y)` 开始,长度为 `len`。打印时每个字符间暂停 50 毫秒,以控制导火线的燃烧速度。 4. `print_sparkle(int x, int y, char c)` 函数用于打印烟花爆炸时的火花,位置为 `(x, y)`,字符为 `c`。每个火花暂停 50 毫秒,以控制火花的闪烁速度。 5. `explode(int x, int y)` 函数用于让烟花在位置 `(x, y)` 爆炸。爆炸时会随机产生 30 个火花,并在随机方向上飞散。 6. `main()` 函数无限循环,每次循环产生一个随机位置和随机长度的导火线,然后让烟花爆炸。 要运行这个程序,需要在支持 ANSI 转义序列的终端(如 Linux 终端或 macOS 终端)上编译并运行。可以使用以下命令进行编译: ``` gcc fireworks.c -o fireworks ``` 然后使用 `./fireworks` 命令运行程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值