C语言 仿LINUX下fortune命令(随机显示格言)

来源:互联网 发布:apache 认证访问 编辑:程序博客网 时间:2024/05/21 06:12

今天看到了一个LINUX下的有趣命令。

fortune命令。

当你执行此命令时,屏幕会随机显示一个格言。


然后,我花了一点时间用C语言做了一个大致的DEMO程序。


C语言程序:

#include<stdio.h>#include<stdlib.h>#include<time.h>//读取文件某一行的格言char * ReadSpeacialLine(int row,char filename[]) {     FILE *fp;     int WhichLine=row;             //指定要读取哪一行    int CurrentIndex=0;             //当前读取的行    char StrLine[1024];             //每行最大读取的字符数,可根据实际情况扩大    if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读    {         printf("error!");         return NULL;     }     while (!feof(fp))     {         if (CurrentIndex==WhichLine)        {            fgets(StrLine,1024,fp);  //读取一行            printf("%s", StrLine); //输出            return StrLine;        }        fgets(StrLine,1024,fp);  //读取一行,并定位到下一行        CurrentIndex++;    }     fclose(fp);                     //关闭文件    return NULL; }//计算文件的总行数(便于后面产生一定范围内的随机数)int SumOfRows(char filename[]){FILE *fp;int sum_rows=1,c;fp=fopen(filename,"r"); if (fp!=NULL)while ((c=fgetc(fp))!=EOF){ if(c=='\n')sum_rows++;  }fclose(fp);return sum_rows;}//产生在文件总行数以内的随机数int init_rand(char filename[]){intsum_rows=SumOfRows(filename);int row;int begin=0;srand(time(NULL));  /*初始化随机数种子*/row=rand()%(sum_rows-begin)+begin;  /*生成一个[t,sum_rows)区间内的整数*/return row;}int main(){char filename[] = "maxim.txt"; //文件名int row=init_rand(filename);ReadSpeacialLine(row,filename);return 0;}


我的格言集:



第一次:

第二次:


第三次:


0 0
原创粉丝点击