找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3322|回复: 0
打印 上一主题 下一主题
收起左侧

C语言作品 定时小工具(修正双引号问题)

[复制链接]
跳转到指定楼层
楼主
ID:71922 发表于 2015-1-11 01:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
升级版 -> 定时小工具


再程序提示输入文件路径时输入:Love 梦想 可以得到源代码
升级版程序下载地址:定时小工具


旧版源代码
===================================================
===================================================
  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方式函数 【nll(int a)】 time_t方式函数
  8. char xuanze(char yy);  // 判断输入选择函数
  9. int dongzuo(),jilu(),fs(); //【dongzuo()】 读取用户指定运行动作函数 【jilu()】记录文件函数  【fs()】选择计时方式函数
  10. char ll[130]={0},lj[100]={0},file[]="闹铃动作.txt",kk[]="请将要运行的程序或音乐的绝对路径复制到这里,覆盖这行字并保存(支持DOS命令)...";
  11. int main()
  12. {
  13.    
  14.     system("COLOR 0a");
  15.     system("title 欢迎使用由【遲、钝dè豬】设计的程序~~");
  16.     printf("*******************************************************************************");
  17. printf("\n\n\t\t\t\t【 说 明 】");
  18. printf("\n\n\t可惜的是不能实现自动开机,不过它的作用不仅仅局限于闹钟......");
  19. printf("\n\n\t嘿嘿,这是值得欣慰地方,提供两种记时方式,以减少时间误差......");
  20. printf("\n\n\t【Sleep】记时方式是让程序暂停运行,暂停时间由用户指定的时间......");
  21. printf("\n\n\t【time_t】方式记时方式是让程序不断读取时间差是否等于用户指定的时间...");
  22. printf("\n\n\t精确到分钟,最低也需要1分钟,有时间再把它精确到秒吧,O(∩_∩)O~.......");
  23. printf("\n\n\t最后感谢【蓝雨森林】QQ:000000......");
  24. printf("\n\n\t解决了让我郁闷了很久的重复使用scanf()函数无法中断程序等待用户输入问题..");
  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  设计\n\n");
  27.     printf("*******************************************************************************");
  28. system("pause");
  29. system("cls");
  30. printf("\n\n\a【请注意弹出的对话框,有可能会隐藏在程序界面的背后...】");
  31. jilu();// 判断、读取记录文件函数
  32. dongzuo(); // 调用记录用户指定函数
  33. fs(); // 计时方式选择函数
  34.     }
  35.    
  36. /*********************************/
  37. /*-------【计时方式选择】------*/
  38. /********************************/   
  39. int fs()
  40. {
  41. int a;
  42. if((MessageBox(0,"【Y】Sleep 方式记时  [无倒计时提示,误差较小]\n\n【N】time_t方式记时 [有倒计时提示,误差较大]","选择记时方式",MB_YESNO))==6)
  43. {
  44. system("title 欢迎使用由【遲、钝dè豬】设计的程序~~【Sleep方式记时】");
  45. printf("\n请输入闹铃时间(分钟):");
  46.    scanf("%d",&a);
  47. nl(a);
  48. }
  49. else
  50. {
  51. system("title 欢迎使用由【遲、钝dè豬】设计的程序~~【time_t方式记时】");
  52. printf("\n请输入闹铃时间(分钟):");
  53.    scanf("%d",&a);
  54. nll(a);
  55. }
  56. strcpy(ll,"\"");
  57. strcat(ll,lj);
  58. strcat(ll,"\"");
  59. printf("【懒猪!时间到!该刷牙洗脸骑着破电动去上班啦...】\n\n\a\a\a");
  60. system(ll); // 执行用户指定的程序、音乐或命令
  61. system("pause');
  62. exit(0);
  63. }

  64. /*********************************/
  65. /*-------【Sleep方式记时】------*/
  66. /********************************/   
  67. int nl(int a)
  68. {
  69. a*=60000; // 将毫秒转换为分钟
  70. printf("\n【已进入倒计时闹铃!】\n\n");
  71.     Sleep(a); // 中断程序,等待用户指定的时间后返回主函数
  72.     }
  73.      
  74. /**********************************/
  75. /*-------【time_t方式记时】------*/
  76. /*********************************/   
  77. int nll(int a)
  78. {
  79.     time_t start,end;
  80.     int v,d=1,i=60,h=1;   
  81.    a*=60;// 转化为分钟 1分钟=60秒
  82.    printf("\n【已进入倒计时闹铃!】\n\n");
  83.     start=time(NULL);// 开始记录时间并赋值给变量start
  84.     printf("距离闹铃时间还剩【%d】分钟\n\n",a/60-d);
  85.     for(;;)
  86.         {
  87.            end=time(NULL);// 结束记录时间并赋值给变量end
  88.     if((difftime(end,start))==a)// 如果开始记录的时间到结束记录的时间等于指定的时间 则跳出循环
  89.     break;
  90.      else  // 否则
  91.      {
  92.         if((difftime(end,start))==i) // 如果开始记录的时间到结束记录的时间等于i=60=1分钟 则显示剩余时间
  93.         {   
  94.             v=a/60-1-d;  
  95.         if(h==1)// 设定h 控制每分钟只显示一次提示信息
  96.         {
  97.                 printf("距离闹铃时间还剩【%d】分钟\n\n",v);
  98.                 h=0;
  99.                 }
  100.         }
  101.         else if((difftime(end,start))>i) // 控制每分钟都会有显示  
  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,"无法写入动作文件","提示",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("无法读取动作");
  128.     else
  129.     {
  130.        fscanf(fp,"%[^\n]",lj); // 不写%s 而写%[^\n]是因为让fscanf()函数可以读取空格并写入文件 \n :代表空格
  131.        fclose(fp);
  132.        if((strcmp(lj,kk))==0)
  133.        {
  134.    MessageBox(0,"程序未检测到你输入了程序、音乐的绝对路径或DOS命令","注意",MB_OK);
  135.    dongzuo();
  136.    }
  137.        printf("\n\n你输入了这行路径或Dos命令:\n\n【%s】\n\n",lj);
  138.        printf("【提示:当时间到了程序会自动运行上面的程序、音乐或命令...】\n\n");
  139.        printf("确认以上的路径或Dos命令吗?(Y/N):");
  140.        r=xuanze(r);
  141.        if(r=='N'||r=='n')dongzuo();
  142.      if((MessageBox(0,"是否保存此记录以供下次使用?","提示",MB_YESNO))==6)
  143.       MessageBox(0,"如果需要更改运行的程序、音乐或命令,可以删除本目录下的【闹铃动作.txt】\n\n或直接更改里面程序、音乐的绝对路径或命令......","提示",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); // 清除一个流...避免重复使用scanf()函数是无法中断程序等待用户输入  (这个问题让我头疼N久...)
  159.      if(yy!='y'&&yy!='n'&&yy!='Y'&&yy!='N')
  160.      {
  161.      printf("\n输入错误,请重新输入:\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发现记录文件,正在读取记录文件...");
  179.        fscanf(fp,"%[^\n]",lj); // 为什么不写%s 而写%[^\n]是因为让fscanf()函数可以读取空格并写入文件 \n :代表空格
  180.        fclose(fp);
  181.        printf("\n\n路径或Dos命令为:\n\n【%s】\n\n",lj);
  182.        printf("【提示:当时间到了程序会自动运行上面的程序、音乐或命令...】\n\n");
  183.     fs();
  184.     }

  185. }
复制代码




下载程序: dsxgj-v1.0.zip (14.93 KB, 下载次数: 6)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表