c判断文件是否修改|如何用C语言监视一文件(可以隔一定时间检测该文件)当文件相比较上一时间有改动时读出改动处

㈠ 如何用C语言监视一文件,(可以隔一定时间检测该文件),当文件相比较上一时间有改动时,读出改动处

一个伪代码,给你一个思路FILE *fp;long len=0,lastlen=0;while(1){隔一定时间fp=fopen("a.txt","r");len=ftell(fp);//可以返回文件长度if(len>lastlen){fseek(SEEK_SET,lastlen);//定位到上一次改动前的地方回char buf[len-lastlen];fread(buf,1,len-lastlen,fp);//把改动处读到答内存中lastlen=len;}//iffclose(fp);}//while 用select写什么?

㈡ 关于C语言中文件修改的操作!

使用文件操作函数即可创建文件,使用文件操作函数fprintf即可修改文件内容。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。2、例程:#include<stdio.h>int i,a[100];int main(){ FILE * fp1 = fopen("input.txt", "r");//打开输入文件 FILE * fp2 = fopen("output.txt", "w");//打开输出文件 if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出 puts("不能打开文件!"); rturn 0; } for(i=0;fscanf(fp1,"%d",a+i)!=EOF;i++);//从输入文件连续读取整数到数组a for(;i–;)fscanf(fp2,"%d ",a[i]);//把数组a逆序写入到输出文件当中 fclose(fp1);//关闭输入文件 fclose(fp2);//关闭输出文件,相当于保存 return 0;}

㈢ C或者C++怎么监控一个,文件改变了

调用CFilestatue结构体中的m_atime和m_mtime就可以了.CFileStatus stat;file.GetStatus(stat); //getstatus获取文件信息等//stat.m_ctime 创建时间//stat.m_atime 访问时间//stat.m_mtime 修改时间 // stat.m_size 文件大小、

㈣ c语言监控文件是否被更改并检测出修改人的IP及其修改内容

改ip是解觉不了,因为监控软件设置了IP比如从192.168.0.1到255,你再改也没用,要解决就下载反网管软件

㈤ C语言:如何对保存到文件中的信息修改查询

可以打开文件,将文件重新读出到结构体链表中,保存时在重新写入。

㈥ c语言,对文本文件处理,只要文件内容改变,就复制到另一个文本中

判断上次修改时间如果和本次修改时间不一致,则认为文件改变,然后保存。文件时间的判断可以使用 struct _stat和stat函数来做。stat机构如下:structstatfinfo;stat(sFileName,&finfo);intsize=finfo.st_size;structstatmode_tst_mode;//文件对应的模式,文件,目录等ino_tst_ino;//i-node节点号dev_tst_dev;//设备号码dev_tst_rdev;//特殊设备号码nlink_tst_nlink;//文件的连接数uid_tst_uid;//文件所有者gid_tst_gid;//文件所有者对应的组off_tst_size;//普通文件,对应的文件字节数time_tst_atime;//文件最后被访问的时间time_tst_mtime;//文件内容最后被修改的时间time_tst_ctime;//文件状态(属性)改变时间blksize_tst_blksize;//文件内容对应的块大小blkcnt_tst_blocks;//文件内容对应的块数量

㈦ C语言编译器会编译改变过的代码,而不会编译没有改动的代码。 我想知道它是怎么判断程序是否有呗修改过的

要记录你来的编译器生成自的文件之日起,如OBJ,EXE生成的编译器发现相关的文件,如C源文件,老obj的日期选择这部分重新编译。 特别是,它记录了所有相关的文件,例如,你了一个新H头文件,生成系统将通过横向比较。 h文件编译的结果,如果我们找到了老的时候重新编译它们。

㈧ c语言程序程序能读取一个文件,有注释 还能选择 是否修改里边内容 30分送上 很

具体操作请依次执行以下命令:# cd /usr/src (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)# rm –rf linux (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)# tar jvxf linux-2.6.24.tar.bz2 (解压新内核)# ln -s linux-2.6.24 linux (重新生成linux文件夹)

㈨ c语言 文件内容修改 大神帮个忙

/*这里的代码是个例子,你根据自己的情况修改一下。基本思想:将文件内容加载到内存中,在内存中修改,最后将修改后的内容重新写回文件。*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<unistd.h>#include<time.h>typedefstruct_flist{struct_flist*prev;struct_flist*next;//charcontext[0];}FListType;#definefile_list_sizesizeof(FListType)/*作用:将文件按行加载到内存中,内存通过动态的方式分配*/FListType*LoadFile(char*fileName){FILE*fp=NULL;charbuf[128];FListType*head=NULL,*list,*next;//打开文件fp=fopen(fileName,"r");if(NULL==fp){printf("Open%sfailed!",fileName);returnNULL;}//按行获取文件内容while(NULL!=fgets(buf,sizeof(buf),fp)){//动态分配内存,最后加1的目的是为了保存字符串的结束标志字符''list=(FListType*)malloc(file_list_size+strlen(buf)+1);if(NULL==list)break;memset(list,0,file_list_size+strlen(buf)+1);//将该行的内容复制到分配得到的内存中memcpy(list+1,buf,strlen(buf));if(NULL==head){head=list;}else{next=head;while(next->next){next=next->next;}next->next=list;list->prev=next;}}fclose(fp);returnhead;}/*作用:将内存中的内容重新写回到文件中*/voidSaveModify(FListType*head,char*fileName){FILE*fp=NULL;charbuf[128];FListType*list;fp=fopen(fileName,"w");if(NULL==fp){printf("Open%sfailed!",fileName);return;}list=head;while(list){//写回文件fprintf(fp,"%s",(char*)(list+1));list=list->next;}fclose(fp);}/*作用:编辑(修改)文件内容*/voidEditFile(FListType*head,intnum,intvalue){FListType*list=head,*node;intcount=1;while(list){//判断哪一行需要修改,这里只是一个简单的例子,根据行号来判断if(num==count){//分配内存,用以保存新的数据,分配了20个字节,具体要根据实际需要来定node=(FListType*)malloc(file_list_size+20+1);if(NULL==node)break;memset(node,0,file_list_size+20+1);//将新的数据写到刚分配出来的内存中sprintf((char*)(node+1),"%d%d%d%d",value,value,value,value);//改变链表的指针指向,将新的节点替换为老的节点,并将老的节点的内容释放掉list->prev->next=node;node->prev=list->prev;node->next=list->next;list->next->prev=node;list->prev=NULL;list->next=NULL;//释放老的节点内存空间free(list);list=node;break;}list=list->next;count++;}SaveModify(head,"vvv");}/*作用:删除文件内容*/voidEditFileDelLine(FListType*head,intnum){FListType*list=head,*node;intcount=1;while(list){//判断哪一行需要修改,这里只是一个简单的例子,根据行号来判断if(num==count){//改变链表的指针指向,将该节点的内容释放掉list->prev->next=list->next;list->next->prev=list->prev;node=list->prev;list->prev=NULL;list->next=NULL;free(list);list=node;break;}list=list->next;count++;}SaveModify(head,"vvv");}/*测试函数*/voidPrintTest(FListType*head){FListType*list=head;while(list){printf("%s",(char*)(list+1));list=list->next;}}/*释放内存*/voidFreeMem(FListType*head){FListType*list=head;while(head){list=head->next;free(head);head=list;}}intmain(void){FListType*head=NULL;head=LoadFile("vvv");if(NULL==head)return0;PrintTest(head);EditFile(head,2,19);//EditFileDelLine(head,2);FreeMem(head);return0;}

修改文件内容

㈩ 需要编写一个C语言程序,比较文件是否被改动过,必须用MD5加密文件然后比较文件看是否被改动过。 先谢谢各

你说的应该是比较两文件的MD5值吧,下面上代码:

怎么代码发不了?我直接给你


赞 (0)