- 首先创建一个基本的名字,且每行一个名字
- 接着读取显示即可
/*使用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; }
巨简单的班级随机刷新点名代码(C语言初学者必学!)
于 2024-07-24 19:43:45 首次发布