找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3984|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

C語言作品 定時(shí)小工具(修正雙引號(hào)問題)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71922 發(fā)表于 2015-1-11 01:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
升級(jí)版 -> 定時(shí)小工具


再程序提示輸入文件路徑時(shí)輸入:Love 夢(mèng)想 可以得到源代碼
升級(jí)版程序下載地址:定時(shí)小工具


舊版源代碼
===================================================
===================================================
  1.    首次采用彈窗~~~~
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <windows.h>
  5. #include <time.h>
  6. #include <unistd.h>
  7. int nl(int a),nll(int a); // 【nl(int a)】 Sleep方式函數(shù) 【nll(int a)】 time_t方式函數(shù)
  8. char xuanze(char yy);  // 判斷輸入選擇函數(shù)
  9. int dongzuo(),jilu(),fs(); //【dongzuo()】 讀取用戶指定運(yùn)行動(dòng)作函數(shù) 【jilu()】記錄文件函數(shù)  【fs()】選擇計(jì)時(shí)方式函數(shù)
  10. char ll[130]={0},lj[100]={0},file[]="鬧鈴動(dòng)作.txt",kk[]="請(qǐng)將要運(yùn)行的程序或音樂的絕對(duì)路徑復(fù)制到這里,覆蓋這行字并保存(支持DOS命令)...";
  11. int main()
  12. {
  13.    
  14.     system("COLOR 0a");
  15.     system("title 歡迎使用由【遲、鈍dè豬】設(shè)計(jì)的程序~~");
  16.     printf("*******************************************************************************");
  17. printf("\n\n\t\t\t\t【 說 明 】");
  18. printf("\n\n\t可惜的是不能實(shí)現(xiàn)自動(dòng)開機(jī),不過它的作用不僅僅局限于鬧鐘......");
  19. printf("\n\n\t嘿嘿,這是值得欣慰地方,提供兩種記時(shí)方式,以減少時(shí)間誤差......");
  20. printf("\n\n\t【Sleep】記時(shí)方式是讓程序暫停運(yùn)行,暫停時(shí)間由用戶指定的時(shí)間......");
  21. printf("\n\n\t【time_t】方式記時(shí)方式是讓程序不斷讀取時(shí)間差是否等于用戶指定的時(shí)間...");
  22. printf("\n\n\t精確到分鐘,最低也需要1分鐘,有時(shí)間再把它精確到秒吧,O(∩_∩)O~.......");
  23. printf("\n\n\t最后感謝【藍(lán)雨森林】QQ:000000......");
  24. printf("\n\n\t解決了讓我郁悶了很久的重復(fù)使用scanf()函數(shù)無法中斷程序等待用戶輸入問題..");
  25. printf("\n\n\t\t\t\t\t\t遲、鈍dè豬  QQ:0000000000\n\n");
  26. printf("\t\t\t\t\t\t2010年12月25日 0:11  設(shè)計(jì)\n\n");
  27.     printf("*******************************************************************************");
  28. system("pause");
  29. system("cls");
  30. printf("\n\n\a【請(qǐng)注意彈出的對(duì)話框,有可能會(huì)隱藏在程序界面的背后...】");
  31. jilu();// 判斷、讀取記錄文件函數(shù)
  32. dongzuo(); // 調(diào)用記錄用戶指定函數(shù)
  33. fs(); // 計(jì)時(shí)方式選擇函數(shù)
  34.     }
  35.    
  36. /*********************************/
  37. /*-------【計(jì)時(shí)方式選擇】------*/
  38. /********************************/   
  39. int fs()
  40. {
  41. int a;
  42. if((MessageBox(0,"【Y】Sleep 方式記時(shí)  [無倒計(jì)時(shí)提示,誤差較小]\n\n【N】time_t方式記時(shí) [有倒計(jì)時(shí)提示,誤差較大]","選擇記時(shí)方式",MB_YESNO))==6)
  43. {
  44. system("title 歡迎使用由【遲、鈍dè豬】設(shè)計(jì)的程序~~【Sleep方式記時(shí)】");
  45. printf("\n請(qǐng)輸入鬧鈴時(shí)間(分鐘):");
  46.    scanf("%d",&a);
  47. nl(a);
  48. }
  49. else
  50. {
  51. system("title 歡迎使用由【遲、鈍dè豬】設(shè)計(jì)的程序~~【time_t方式記時(shí)】");
  52. printf("\n請(qǐng)輸入鬧鈴時(shí)間(分鐘):");
  53.    scanf("%d",&a);
  54. nll(a);
  55. }
  56. strcpy(ll,"\"");
  57. strcat(ll,lj);
  58. strcat(ll,"\"");
  59. printf("【懶豬!時(shí)間到!該刷牙洗臉騎著破電動(dòng)去上班啦...】\n\n\a\a\a");
  60. system(ll); // 執(zhí)行用戶指定的程序、音樂或命令
  61. system("pause');
  62. exit(0);
  63. }

  64. /*********************************/
  65. /*-------【Sleep方式記時(shí)】------*/
  66. /********************************/   
  67. int nl(int a)
  68. {
  69. a*=60000; // 將毫秒轉(zhuǎn)換為分鐘
  70. printf("\n【已進(jìn)入倒計(jì)時(shí)鬧鈴!】\n\n");
  71.     Sleep(a); // 中斷程序,等待用戶指定的時(shí)間后返回主函數(shù)
  72.     }
  73.      
  74. /**********************************/
  75. /*-------【time_t方式記時(shí)】------*/
  76. /*********************************/   
  77. int nll(int a)
  78. {
  79.     time_t start,end;
  80.     int v,d=1,i=60,h=1;   
  81.    a*=60;// 轉(zhuǎn)化為分鐘 1分鐘=60秒
  82.    printf("\n【已進(jìn)入倒計(jì)時(shí)鬧鈴!】\n\n");
  83.     start=time(NULL);// 開始記錄時(shí)間并賦值給變量start
  84.     printf("距離鬧鈴時(shí)間還!%d】分鐘\n\n",a/60-d);
  85.     for(;;)
  86.         {
  87.            end=time(NULL);// 結(jié)束記錄時(shí)間并賦值給變量end
  88.     if((difftime(end,start))==a)// 如果開始記錄的時(shí)間到結(jié)束記錄的時(shí)間等于指定的時(shí)間 則跳出循環(huán)
  89.     break;
  90.      else  // 否則
  91.      {
  92.         if((difftime(end,start))==i) // 如果開始記錄的時(shí)間到結(jié)束記錄的時(shí)間等于i=60=1分鐘 則顯示剩余時(shí)間
  93.         {   
  94.             v=a/60-1-d;  
  95.         if(h==1)// 設(shè)定h 控制每分鐘只顯示一次提示信息
  96.         {
  97.                 printf("距離鬧鈴時(shí)間還剩【%d】分鐘\n\n",v);
  98.                 h=0;
  99.                 }
  100.         }
  101.         else if((difftime(end,start))>i) // 控制每分鐘都會(huì)有顯示  
  102.         {
  103.             h=1;  
  104.         i+=60;//記錄分鐘
  105.         d++;//記錄秒
  106.         }      
  107.      }   
  108. }
  109.     }
  110. /**************************************/
  111. /*-------記錄用戶指定文件或命令------*/
  112. /*************************************/   
  113. int dongzuo()
  114. {
  115.     FILE *fp;
  116.     char r;
  117.   if((fp=fopen(file,"w"))==NULL)
  118.     MessageBox(0,"無法寫入動(dòng)作文件","提示",MB_OK);
  119.     else
  120.     {
  121.         fputs(kk,fp);
  122.         fclose(fp);
  123.         system(file);   
  124.            }
  125.    
  126.     if((fp=fopen(file,"r"))==NULL)
  127.     puts("無法讀取動(dòng)作");
  128.     else
  129.     {
  130.        fscanf(fp,"%[^\n]",lj); // 不寫%s 而寫%[^\n]是因?yàn)樽宖scanf()函數(shù)可以讀取空格并寫入文件 \n :代表空格
  131.        fclose(fp);
  132.        if((strcmp(lj,kk))==0)
  133.        {
  134.    MessageBox(0,"程序未檢測(cè)到你輸入了程序、音樂的絕對(duì)路徑或DOS命令","注意",MB_OK);
  135.    dongzuo();
  136.    }
  137.        printf("\n\n你輸入了這行路徑或Dos命令:\n\n【%s】\n\n",lj);
  138.        printf("【提示:當(dāng)時(shí)間到了程序會(huì)自動(dòng)運(yùn)行上面的程序、音樂或命令...】\n\n");
  139.        printf("確認(rèn)以上的路徑或Dos命令嗎?(Y/N):");
  140.        r=xuanze(r);
  141.        if(r=='N'||r=='n')dongzuo();
  142.      if((MessageBox(0,"是否保存此記錄以供下次使用?","提示",MB_YESNO))==6)
  143.       MessageBox(0,"如果需要更改運(yùn)行的程序、音樂或命令,可以刪除本目錄下的【鬧鈴動(dòng)作.txt】\n\n或直接更改里面程序、音樂的絕對(duì)路徑或命令......","提示",MB_OK);
  144.       else
  145.       unlink(file);
  146.       
  147. }  
  148. }

  149. /***********************/
  150. /*-------判斷輸入------*/
  151. /***********************/
  152. char xuanze(char yy)
  153. {
  154.     for(;;)
  155.      {
  156.         
  157.      scanf("%c",&yy);
  158.      fflush(stdin); // 清除一個(gè)流...避免重復(fù)使用scanf()函數(shù)是無法中斷程序等待用戶輸入  (這個(gè)問題讓我頭疼N久...)
  159.      if(yy!='y'&&yy!='n'&&yy!='Y'&&yy!='N')
  160.      {
  161.      printf("\n輸入錯(cuò)誤,請(qǐng)重新輸入:\a");
  162.      continue;
  163.      }
  164.      else
  165.      break;
  166.      }
  167.      return yy;
  168.     }
  169.   /***********************/
  170. /*-------歷史記錄------*/
  171. /***********************/
  172. int jilu()
  173. {
  174. FILE *fp;
  175. if((fp=fopen(file,"r"))==NULL);
  176. else
  177. {
  178.   printf("\n\n\t發(fā)現(xiàn)記錄文件,正在讀取記錄文件...");
  179.        fscanf(fp,"%[^\n]",lj); // 為什么不寫%s 而寫%[^\n]是因?yàn)樽宖scanf()函數(shù)可以讀取空格并寫入文件 \n :代表空格
  180.        fclose(fp);
  181.        printf("\n\n路徑或Dos命令為:\n\n【%s】\n\n",lj);
  182.        printf("【提示:當(dāng)時(shí)間到了程序會(huì)自動(dòng)運(yùn)行上面的程序、音樂或命令...】\n\n");
  183.     fs();
  184.     }

  185. }
復(fù)制代碼




下載程序: dsxgj-v1.0.zip (14.93 KB, 下載次數(shù): 6)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表