当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 我想把一个文件夹内的所有文件及文件夹合并为一个大文件,但不想用建立一个新文件再把其他文件读出再写入这个新文 件的方法,因为那样太慢.我的思路是:直接更改磁盘上文件簇链信息,使多个文件首尾相连,这样一来就形成了一个大文 件,再设置这个大文件的属性信息,这样在操作系统眼里就只有一个大文件了. 但具体怎样实现,需要高手指点,用windows api能否做到? 怎样读写这些底层信息? ......
 ·怎样判断用户是否在线    »显示摘要«
    摘要: 大家好,论坛帖子中会的用户信息中会显示用户是否在线,这是怎么实现的呢? 还有就是考虑用户不是按网站提供的”注销“按钮退出,而是直接按ie的”x“关闭按钮 退出的情况。 希望各位仁兄能够给出思路或者源代码。谢谢!!! ......


,我要怎么样才能删除一条文件中的记录

比如说,我用链表往文件里写入10条记录,如果我想把第八条删掉,我应该怎么做?我刚开始的思路是把链表一个一个的读进来,再写回去,可是感觉这样没有效率啊,又想不出更好的办法了,请各位给点儿意见!

NO.1   作者: jixingzhong

如果还没有写到文件中去  
   
  那很简单  
   
  对连表进行修改      
   
  之后再写入文件就好了      
   
  OK   !  
   
   
   
   
   
  如果已经写入文件了  
   
  需要修改的是文件的内容  
   
  有两种办法  
   
      1       就是你说的      
   
              读取文件内容   -》   修改   -》   重新写文件  
   
      2       上面的是很麻烦  
   
              可以使用下面的办法来简化    
   
              由于使用的是连表  
   
              我们可以确定   接点的结构  
   
              那么文件中数据的   位置我们也是可以计算的!  
   
              我们可以直接修改目标数据就好了    
   
              如下   讲解:  
   
   
   
   
   
   
  假设5515在文件偏移量100处,如果新改写的字符串加上\0的字符数量少于5515的字符数量,直接改写就行。如果比5515多,那就要用系统输入输出函数先把文件的长度增加两者的差值,再把后面的数据往后移,空出足够的地方,再写入,简化代码如下:  
   
  #include<io.h>  
  #include<string.h>  
   
  int   i,iFile;  
  long   lSub,lNewLength,lFileSub,lFileLength;  
  char   string[]="abcdef";       //假设这是改写字符串,并且长度大于5515  
  char   temp;  
  iFile=open("test.dat",O_RDWR);     //以可读可写方式打开文件  
  lSub=strlen(string)-4+1;       //4是5515字符数量,差值包括\0;  
  lseek(iFile,0l,SEEK_END);  
  lFileSub=tell(iFile)-100-4+1;     //算出5515后面的字节数量;  
  lFileLength=filelength(iFile);  
  lNewlength=lFileLength+lSub;  
  chsize(iFile,lNewlength);       //增加文件test.dat的长度,原文件末尾多出来的lSub个字节会自动  
                                                              以\0填充  
  for(i=0;i<lFileSub;i++)  
  {  
          lseek(iFile,-i-lSub,SEEK_END);  
          read(&temp,sizeof(char),1,iFile);  
          lseek(iFile,-i,SEEK_END);  
          write(&temp,sizeof(char),1,iFile);  
  }                                                       //移动末尾的字节块。本来想一次过用malloc移动整块字节块的,但  
                                                                想到楼主文件可能很大,不一定能分配到足够的内存,所以还是一  
                                                              个一个字节地移动。  
  lseek(iFile,100l,SEEK_SET);  
  write(string,sizeof(char),strlen(string)+1,iFile);  
  close(iFile);


    摘要: 现有一个excel文件,其中含有很多表格,其中汇总表的每个单元格数据是由其他 表格的单元格数据计算得出的,其公式是countif(0501!b540:af581,2)/2 表示 该单元格是表格0501中的第540行b列到581行af列中单元格所有数值是2的总和。 每个月都要有一张汇总表,因为汇总表的单元格很多,每次都要手工修改单元格的 计算公式很麻烦,其实只是将公式countif(0501......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE