巨简单的班级随机刷新点名代码(C语言初学者必学!)

  1. 首先创建一个基本的名字,且每行一个名字
  2. 接着读取显示即可
    /*使用C语言,制作一个在命令行运行的点名程序,
    1.该程序运行时可指定班级的花名册文件,
    2.运行后在界面上显示
    2.1随机抽取名字的过程,
    3.速度由快到慢,
    逐渐定格到某一个“幸运儿”上,程序结束*/
    
    
    #include <time.h>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>    //引入随机rand()
    #include<unistd.h>  //usleep,这个是LInux上的一般可以不用
    
    #define NUM 20    //名字的总个数
    
    
    //在终端随机随机滚动显示名单
    void delay_show(int count,char (*name)[50], int line) 
    {
        static int delay = 150000; // 初始延迟时间为100毫秒(100000微秒)
        int increment = 10000; // 每次增加的延迟时间为50毫秒(50000微秒)
    
        srand(time(NULL));//rand()不再是伪随机数!很重要
        int  j1 = 40;
        for (int i = 0;i < j1 ; i++)
         {
               printf("\rLucky boy is :\n");
            int   j2 =rand() % (line-1);
            printf("\r\033[k%s", name[j2]);      
            //\r的作用是移动光标到左边,\033[k是覆盖光标后的一串字符
    
            fflush(stdout); // 确保字符立即输出到屏幕上
            if (i == j1-1) break;
            usleep(delay); // 延迟
            system("clear");
            delay += increment; // 增加延迟时间
        }
    
    }
    
    void bianli()  //读取txt文件
    {    
        //文件打开要随手关闭,fopen,fclose不分家!随手关门好习惯
      FILE * fd = fopen("/mnt/hgfs/yueqian/实验九/name.txt","r+");
           //上述是你创建txt文件的路径↑    ↑模式选择
      if (fd == NULL)       
      { //打开失败
        printf("error");
      }
    
      char  str[100];
      char  name[NUM][50];
      int i =0,j1,j2;
      int line=0;
      
             
      while ( (fgets(str,100,fd)) != NULL )  //只要没读取
      {     
          strcpy(name[line++],str); 
            //复制字符串到name数组中,注意会把txt文件中的\n字符也读取了
            //不想去除的可以直接使用system("clear"),方便快捷好用爱用^_^
      }
      delay_show(10, name, line); //调用函数
      fclose (fd);  //注意文件的关闭
    }
    
    int main(int argc, const char * (*argv))
    {
        bianli();   
        return 0;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值