tqsheng

go.....
随笔 - 366, 文章 - 18, 评论 - 101, 引用 - 0
数据加载中……

c运行时,文件结尾

windows下似乎可以调用API     SetFileSize
但是不甚确定,楼主自己查查MSDN吧     呵呵

可以通过系统提供的API来设置文件结尾,
在Linux下可以包含fcntl.h,使用int   chsize(int   handle,   long   size);
在windows下有SetFilePointer     SetEndOfFile,请参阅MSDN
这些都是文件稍微底层的操作,所以标准C库函数里面没有

#include   <io.h>  

int   main(void)  
{  
      int   handle;  
      char   buf[11]   =   "0123456789 ";  

      /*   create   text   file   containing   10   bytes   */  
      handle   =   open( "DUMMY.FIL ",   O_CREAT);  
      write(handle,   buf,   strlen(buf));  

      /*   truncate   the   file   to   5   bytes   in   size   */  
      chsize(handle,   5);  

      /*   close   the   file   */  
      close(handle);  
      return   0;  
}  

下面
ftruncate   好象是linux上的吧,windows上没有

long   pos;
FILE   *file;
file=fopen( "filename ", "w+ ");
pos=ftell(file);       //获取当前文件指针位置

ftruncate(fileno(file),pos);   //根据大小截取文件。




#include   "stdafx.h "
#include   "iostream "
#include   "stdio.h "
#include   "stdlib.h "
#include   "windows.h "
#include   "io.h "

using   namespace   std;

int   main()
{
        FILE*   f   =   fopen( "a.txt ",   "r+ ");

        char   sz[128];

        fgets(sz,   128,   f);

        HANDLE   h   =   (HANDLE)_get_osfhandle(_fileno(f));


        SetFilePointer(h,   ftell(f),   NULL,   FILE_BEGIN);
        SetEndOfFile(h);
        fclose(f);        

       
       
       

        return   0;
}



posted on 2012-04-13 11:36 tqsheng 阅读(201) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理