c語言文本內(nèi)容轉(zhuǎn)cmd彩色字體顯示花哩胡哨極有趣






/*
源碼如下
將文本內(nèi)容轉(zhuǎn)換成彩色字符顯示在CMD控制臺(tái)程序編于2021-2-12
奈葉敬編寫
版本2.0
2963787923@qq.com
需要在c盤中創(chuàng)建 C:\\奈葉敬文本目錄\\零錢計(jì)算\\日?qǐng)?bào)收入目錄\\悅誠生活館收入日?qǐng)?bào)2021-5-6.txt
文件并在里面寫入內(nèi)容,然后在本軟件里輸入日期就可以轉(zhuǎn)彩色字符了
一個(gè)花哩胡哨及有趣的小軟件
系統(tǒng)windows7
編譯軟件gcc9.2
ied code 和dve?
編譯成功
*/
#include<string.h>//字符串函數(shù)頭文件
#include<conio.h>//輸入函數(shù)頭文件
#include<stdio.h>//標(biāo)準(zhǔn)頭文件C
#include<windows.h>//API顏色函數(shù)的頭文件
#include<time.h>//定位時(shí)間 函數(shù)的頭文件
void srjm();//聲明輸入與界面函數(shù)
void color(short x)//顏色函數(shù)定義 一個(gè)老哥的
{
? if(x>=0 && x<=15)//參數(shù)在0-15的范圍顏色
? ? ? ? SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); ? ?//只有一個(gè)參數(shù),改變字體顏色
? ? else//默認(rèn)的顏色白色
? ? ? ? SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void srjm() //定義輸入界面函數(shù)
{
?time_t timep;
? ? struct tm *p;
? ? time (&timep);
? ? p=gmtime(&timep);
? ? color(13);printf("#悅誠文化生活館日?qǐng)?bào)收入查詢器2.0版#\n");
? ? color(12);printf("# ? ? 當(dāng)前日期時(shí)間%d-%d-%d ? ? ? #\n",1900+p->tm_year,1+p->tm_mon,p->tm_mday);//年月日
? ? color(10);printf("#輸入日期查日?qǐng)?bào)表格式為X年-X月X-日#\n#輸入完->回車查詢->:");
}
int main()//主函數(shù)
{
?while(1)//程序主循環(huán)
{
?long a1=0,b=0, q=1,a=0,k=0,l[9000]={0},p1=0;//長整形變量及聲明
? ? char ck[170]={"mode con cols="};//腳本函數(shù)字符串
?char ck1[50]={" lines="};//腳本函數(shù)字符串
?char rq[50]={0},hz[6]={".txt"},w[30]={0},cd[12]={0},cd2[12]={0};//一大堆變量
? ? char rb[300]={"C:\\奈葉敬文本目錄\\零錢計(jì)算\\日?qǐng)?bào)收入目錄\\悅誠生活館收入日?qǐng)?bào)"};//文件指針指向的文本目錄地址
?system(" color 15 &&mode con cols=35 lines=15 ");//CMD變量顏色定義及窗口大小設(shè)置
?for(int i=0;i<9000;i++)l[i]='0';
srjm();//界面函數(shù)調(diào)用
gets(rq);//日期輸入
? ? ? ? ? ? ?strcat(rb,rq);//拼接函數(shù) 拼接腳本
? ? ? ? ? ? ?strcat(rb,hz);//拼接函數(shù) 拼接腳本
? system("cls");//清屏函數(shù)
? ? ? ? ? ? ? ? ?FILE *str1=fopen(rb,"r");// 文件指針 指向RB目錄中的文本
? ? ? char str12[9000]={0};//定義一個(gè)從文本中抽取 放到變量的空間 并打印
? ? for(int i=0;fscanf(str1,"%c",&str12[i]) !=EOF;i++)//一個(gè)循環(huán)把文本中的文本抽到字符串變量里的程序
? ?{ ?{
? ? ? ? ? b=i;//看看循環(huán)多少次得出STR12變量的長度及大小
? ? ? ? ? if(str12[i]=='\n')//如果I等于換行就A加1 說明這個(gè)文本有多少行 多少長度
? ? ? ? ?a++;
? ? ? ? ?}
? ? ? ? ?if(str12[i]=='\n')
? ? ? ? ? {
? ? ? ? ? ?a1++;
? ? ? ? ? }
? ? ?do//這個(gè)是算法是求文本中每一行的字符串長度
? ? ?{
? k++;
? if(str12[i]=='\n')
? {
? l[a1]=k;//這是把K每一行長度 存到數(shù)組里 日后可計(jì)算 最長的一行 并設(shè)置窗口寬度
? //printf("K:%d \n I:%d\n",k,i);
? k=0;//重新定值等于0 不讓干擾循環(huán) 每一行的長度
? break;//等于換行就斷開 至此求第一行長度的程序完
? }
? ? ? }while(str12[i]=='\n');
}
? ? ? ? ?for(int i=0;i<b;i++)//這個(gè) 是剛剛從每一行的長度 數(shù)組中算出那個(gè)是寬最大的那個(gè)函數(shù)
? ? ? ? {
?if(l[0]<l[i])
?{
? p1=l[0];
? l[0]=l[i];
? l[i]=p1;
?}
? ? ? ? }
? ? ? fclose(str1);//解開文本指針STR!
? ?sprintf(cd,"%d",a+20);//把A整形轉(zhuǎn)換成字符存到CD里 ?等于說是文本的長度
? sprintf(cd2,"%d",l[0]);//把 L最大的數(shù)字 轉(zhuǎn)換成字符CD2 等于說是文本的寬度
? ? ? ? strcat(ck,cd2);//拼接腳本 名邊窗口大小隨著文本原生的來
? ? ? ? strcat(ck1,cd);//拼接腳本 名邊窗口大小隨著文本原生的來
? ? ? strcat(ck,ck1);//拼接腳本 名邊窗口大小隨著文本原生的來
? system(ck);//執(zhí)行腳本文件
? for(int i=0;i<b;++i)//打印彩色文本函數(shù)
? ? {
/*do{
if(q==1 ||str12[i]=='\n')
{
? int r = rand() % 15;
? if(r==0){r+=13;}
? color(r);
? q=0;
? }
? if(str12[i]=='\n')break;
?}while(str12[i]=='\n');*/
?do
?{
? ? ?int r= rand() % 15; //隨機(jī)函數(shù) 值在15以內(nèi)
? if(r==0){r+=13;}// 等于零是黑色的如果 等于零就看不見了 等于零加13
? color(r); ? ? ? ? ?//顏色函數(shù)加隨機(jī)函數(shù)
? if(str12[i]=='\n') ?//等于換行變退出 否則會(huì)卡死
? {
? break; ? ? ? ?//斷開
? }
? }while(str12[i]=='\n');//
? printf("%c",str12[i]);//核心打印文本彩色的
}
? ?if(fopen(rb,"r") == NULL){color(5);printf("\n輸入正確格式并任意繼續(xù)...");} ?//如果輸入日期的文本不存在或者就顯示這個(gè)
? ? ? ? ?putchar('\n'); ?//換行
? ? ?gets(w); ?//末端輸入
if(!strcmp("E",w)) ?//末端輸入 E退出
?{
?system("cls"); ?//清屏
fclose(str1); ?//解放文本指針
color(10);printf("┍ ?關(guān)閉緩沖區(qū).........┓\n");
Sleep(400); ?//延時(shí)函數(shù)
color(10);printf("┠ ?退出中.............┫\n");
Sleep(400); ?//延時(shí)函數(shù)
color(10);printf("┗ ?退出完畢...........┛\n");
Sleep(400); ?//延時(shí)函數(shù)
break; //斷開
}
system("cls"); ? //清屏
fclose(str1); ? //解放文本指針
}
return 0; ? ?//退出
}