CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

请问在c语言中如何判断一个文件是否修改过?

楼主icegrape()2006-06-04 20:32:43 在 C/C++ / C语言 提问

比如文件更新的时间如何获得?有专门的函数用来获得文件的属性吗?请高手指点 问题点数:40、回复次数:18Top

1 楼viyar(云烟不倒)回复于 2006-06-04 20:40:43 得分 15

stat函数可以知道  
  不过得有个对比才行吧Top

2 楼icegrape()回复于 2006-06-04 20:50:18 得分 0

能说得清楚些吗?我的c语言学的不精  
  对比是指什么?  
  我现在程序中需要判定一个文件是否更新,也就是文件名是始终不变的,但是在经过一些操作后,文件内容可能已经改变了  
  想知道通过何种方法可以判断文件的改变Top

3 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-06-04 21:10:48 得分 0

mfc相关...  
  转到相应版块去!Top

4 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-06-04 21:11:56 得分 0

http://community.csdn.net/Expert/ForumList.asp?typenum=1&roomid=5001Top

5 楼joyself(独来读网)回复于 2006-06-04 23:44:33 得分 0

LZ   什么平台阿Top

6 楼A_B_C_ABC(黄瓜@YouCanDoIt)回复于 2006-06-05 02:17:25 得分 5

比较文件属性中的修改时间也许可行。  
   
  MFC的   CFile中static   BOOL   PASCAL   GetStatus(   LPCTSTR   lpszFileName,   CFileStatus&   rStatus   );  
   
  struct   CFileStatus  
  {  
  CTime   m_ctime;  
  CTime   m_mtime;  
  CTime   m_atime;  
  LONG   m_size;  
  BYTE   m_attribute;  
  TCHAR   m_szFullName[_MAX_PATH];  
  };  
   
  其中CTime   m_mtime;就是修改时间  
   
   
   
   
  Top

7 楼icegrape()回复于 2006-06-05 11:34:43 得分 0

dos系统下,turboc2.0  
  Top

8 楼icegrape()回复于 2006-06-05 11:35:43 得分 0

不好意思没说清楚  
  Top

9 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-06-05 12:35:09 得分 0

好象有困难。。  
    只有问问做sdk的兄弟们!Top

10 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-05 12:46:30 得分 5

struct   stat   statbuf;    
        FILE   *stream;    
   
        /*   open   a   file   for   update   */    
        if   ((stream   =   fopen(FILENAME,   "w+"))   ==   NULL)    
        {    
              fprintf(stderr,   "Cannot   open   output   file.\n");    
              return(1);    
        }    
   
        /*   get   information   about   the   file   */    
        stat(FILENAME,   &statbuf);    
   
        fclose(stream);  
  ...  
   
  然后查看   statbuf   中的内容   ...Top

11 楼icegrape()回复于 2006-06-05 15:13:34 得分 0

运行了jixingzhong的程序,作了适当修改如下  
  #include   <sys\stat.h>  
  #include   <stdio.h>  
  #include   <time.h>  
   
  #define   FILENAME   "HAHA.TXT"  
   
  main()  
  {  
  struct   stat   statbuff;  
  FILE   *stream;  
  char   ch;  
   
  /*open   a   file   for   update*/  
  if((stream=fopen(FILENAME,"r+"))==NULL   )  
  {  
  fprintf(stderr,"Cannot   open   output   file.\n");  
  return(1);  
  }  
   
  ch=getchar();  
  while(ch!='#')  
  {  
  fputc(ch,stream);  
  putchar(ch);  
  ch=getchar();  
  }  
                     
                    /*get   information   about   the   file*/  
  stat(FILENAME,&statbuff);  
  fclose(stream);  
   
  printf("Drive   letter   of   file:%c\n",'A'+statbuff.st_dev);  
  printf("Size   of   file   in   bytes:%ld\n",statbuff.st_size);  
  printf("Time   file   last   opened:%s\n",ctime(&statbuff.st_ctime));  
  printf("Time   file   last   modified:%s\n",ctime(&statbuff.st_mtime));  
  return   0;  
   
   
  }  
  运行结果如下:  
  Drive   letter   of   file:@  
  Size   of   file   in   bytes:14  
  Time   file   last   opened:Mon   Jun   05   14:25:52   2006  
   
  Time   file   last   modified:Mon   Jun   05   14:25:52   2006  
   
  从键盘对文件输入了新的数据,怎么statbuff.st_ctime时间和st_mtime时间竟然是一样的?  
  请问可不可以不用fopen打开文件,而得知文件创建时间和修改时间?  
  因为好像用fopen函数,无论是用"wb""r",.st_ctime和st_mtime都是一样的  
  再问个问题,st_atime是指的什么?struct   stat中各成员变量具体指什么呢?  
   
  Top

12 楼ulardili(海盗)回复于 2006-06-05 15:33:48 得分 5

设计个表,然后通过记录在表里的数据判断是否被修改过Top

13 楼nobush()回复于 2006-06-05 16:08:23 得分 10

#include   <stdio.h>  
  #include   <sys\stat.h>  
   
  main()  
      {  
          struct   stat   buf;  
   
          if(   stat(   "file.txt",   &buf   )   !=   -1   )   {  
              printf(   "File   last   modifie   =   %s\n",   ctime(&buf.st_mtime)   );  
          }  
          return   0;  
      }  
  时间一样因为修改的方式,大多数程序的处理方法都是删掉原文件,保存新文件,因而“修改”=“新建”  
   
  Top

14 楼nobush()回复于 2006-06-05 16:12:01 得分 0

struct   stat中各成员很多恕难以列举,  
  st_atime是指   last   accessed   一般从字母缩写上猜Top

15 楼icegrape()回复于 2006-06-05 16:59:36 得分 0

st_atime        
  Time   of   last   access.  
   
  st_mtime        
  Time   of   last   data   modification.  
   
  st_ctime        
  Time   of   last   file   status   change.  
   
  st_mtime和ctime具体是什么区别呢?Top

16 楼icegrape()回复于 2006-06-05 17:13:15 得分 0

不好意思,第一次在版上发帖子,谢谢大家的帮助^_^  
  问句题外话,这个分数20,怎么送呢,由版主吗?  
  初来乍到,让大家见笑了,hohoTop

17 楼A_B_C_ABC(黄瓜@YouCanDoIt)回复于 2006-06-05 17:56:46 得分 0

st_ctime    
  Time   of   createTop

18 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-07 15:16:43 得分 0

st_mtime        
  Time   of   last   data   modification.  
   
  st_ctime        
  Time   of   last   file   status   change.  
   
  st_mtime和ctime具体是什么区别呢?  
  =================================  
  st_mtime     是文件内容修改时间  
  st_ctime     文件属性修改   ...  
   
   
  关于帖子,楼主是你自己负责揭帖的,  
  分数合理分配给你认为解答正确的人,  
  当然,  
  如果明显分配不合理,  
  斑竹可能会删除这个帖子,  
  因为这有的   倒分   的嫌疑   .....Top

相关问题

关键词

得分解答快速导航

  • 帖主:icegrape
  • viyar
  • A_B_C_ABC
  • jixingzhong
  • ulardili
  • nobush

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo