精华内容
下载资源
问答
  • c语言文件清空truncate ftruncate函数

    千次阅读 2019-05-06 10:17:22
     truncate()和ftruncate()都可以用来修改文件大小,但两者之间也有一些区别。 一、truncate()函数 头文件: #include <unistd.h> 函数定义: int truncate(const char *path, off_t length); 函数...

    truncate ftruncate函数

      truncate()和ftruncate()都可以用来修改文件大小,但两者之间也有一些区别。

    一、truncate()函数

    头文件:

    #include <unistd.h>

    函数定义:

    int truncate(const char *path, off_t length);

    函数调用:

    truncate("./test.txt", 500);

    函数说明:

      truncate()会将参数path指定的文件大小改为参数length指定的大小。 如果原来的文件大小比参数length大,则超过的部分会被删除(如需清空文件,length设置为0)

    返回值:

      执行成功则返回0, 失败返回-1, 错误原因存于errno

    错误代码:

    1 EACCESS 参数path所指定的文件无法存取 
    2 EROFS 欲写入的文件存在于只读文件系统内 
    3 EFAULT 参数path指针超出可存取空间 
    4 EINVAL 参数path包含不合法字符 
    5 ENAMETOOLONG 参数path太长 
    6 ENOTDIR 参数path路径并非一目录 
    7 EISDIR 参数path指向一目录 
    8 ETXTBUSY 参数path所指的文件为共享程序,而且正被执行中 
    9 ELOOP 参数path 有过多符号连接问题。 
    10 EIO I/O存取错误

    二、ftruncate()函数

    头文件:

    #include<unistd.h>

    函数定义:

    int ftruncate(int fd,off_t length);

    函数调用:

    1 out = open("./test.txt", O_RDWR | O_CREAT, S_IRUSR); 
    2 ftruncate(out, 500); 
    3 close(out);

    函数说明:

      ftruncate()会将参数fd指定的文件大小改为参数length指定的大小。

      参数fd为已打开的文件描述词,而且必须是以写入模式打开的文件。

      如果原来的文件大小比参数length大,则超过的部分会被删去。(如需清空文件,length设置为0)

    返回值:

      执行成功则返回0,失败返回-1,错误原因存于errno。

    错误代码:

    1 EBADF 参数fd文件描述词为无效的或该文件已关闭。 
    2 EINVAL 参数fd 为一socket 并非文件,或是该文件并非以写入模式打开。

    三、例如

    int fd;
    const char *s1 = "0123456789";
    const char *s2 = "abcde";
    fd = open("test.txt", O_CREAT | O_WRONLY | O_TRUNC, 0666);
    write(fd, s1, strlen(s1));
    
    ftruncate(fd, 0);
    lseek(fd, 0, SEEK_SET);
    
    write(fd, s2, strlen(s2));
    close(fd);
    return 0;
     
    //先清空文件,再设置文件偏移量,否则会产生文件空洞
    ftruncate(fd, 0); 
    lseek(fd, 0, SEEK_SET); 

     

    展开全文
  • C语言文件操作函数

    2019-12-08 16:55:28
    C语言文件操作函数 函数介绍 文件打开与关闭操作 fopen():文件打开操作 头文件:stdio.h 函数定义:FILE *fopen(char *pname, char *mode) 函数说明:pname是文件名,mode是打开文件的方式mode:“r” 打开一个已经...

    C语言文件操作函数
    函数介绍
    文件打开与关闭操作
    fopen():文件打开操作
    头文件:stdio.h
    函数定义:FILE *fopen(char *pname, char *mode)
    函数说明:pname是文件名,mode是打开文件的方式mode:“r” 打开一个已经存在的文件文本,文件不存在则出错
    以“r+”的方式打开一个文件,会清空文件的原始内容,重新写入数据
    返回值:正常返回:FILE *一个指向文件在内存中的文件信息去的开头
    异常返回:NULL,表示打开操作不成功
    打开文件的作用是:
    (1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量;
    (2)开辟一个缓冲区;
    (3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;
    FILE *:指出fopen是一个返回文件类型的指针函数;
    返回值
    正常返回:被打开文件的文件指针。
    异常返回:NULL,表示打开操作不成功。
    ps:C语言将计算机的输入输出设备都看作是文件。例如,键盘文件、屏幕文件等。ANSI C标准规定,在执行程序时系统先自动打开键盘、屏幕、错误三个文件。这三个文件的文件指针分别是:标准输入stdin、标准输出stdout和标准出错 stderr。
    fclose():文件关闭
    函数定义:int fclose(FILE *fp);
    函数说明:fp是一个以打开的文件的文件指针
    返回值:
    正常返回:0
    异常返回:EOF,表示文件在关闭时发生错误
    fgetc:读取一个字符
    函数定义:int fgetc(FILE *fp)
    函数说明:从fp中读取一个字符,作为返回值返回
    返回值:
    正常返回:返回读取字符的代
    异常返回:返回EOF。例如:要从“写打开”的文件中读取一个字符时,会发生错误而返回一个EOF
    【例1】显示指定文件的内容。
    //程序名为:display.c
    //执行时可用:display filename1 形式的命令行运行。显示文件filename1中的内容。例如,执行命令行display display.c将在屏幕上显示display的原代码。
    //File display program.
    #include <stdio.h>
    void main(int argc,char *argv[]) //命令行参数
    {
    int ch;//定义文件类型指针
    FILE fp;//判断命令行是否正确
    if(argc!=2)
    {
    printf(“Error format,Usage: display filename1”);
    return; //键入了错误的命令行,结束程序的执行
    }
    //按读方式打开由argv[1]指出的文件
    if((fp=fopen(argv[1],“r”))==NULL)
    {
    printf(“The file <%s> can not be opened.”,argv[1]);//打开操作不成功
    return;//结束程序的执行
    }
    //成功打开了argv[1]所指文件
    ch=fgetc(fp); //从fp所指文件的当前指针位置读取一个字符
    while(ch!=EOF) //判断刚读取的字符是否是文件结束符
    {
    putchar(ch); //若不是结束符,将它输出到屏幕上显示 ch=fgetc(fp); //继续从fp所指文件中读取下一个字符
    } //完成将fp所指文件的内容输出到屏幕上显示
    fclose(fp); //关闭fp所指文件
    }
    fputc:写一个字符到文件中
    函数定义:int fputc(int ch, FILE
    fp)
    函数说明:ch是一个整型变量,要写到文件的字符
    fp:文件指针,要写入的文件
    返回值:
    正常返回:要写入的字符的代码
    异常返回:返回EOF
    【例2】将一个文件的内容复制到另一个文件中去。
    //程序名为:copyfile.c
    //执行时可用:copyfile filename1 filename2形式的命令行运行,将文件filename1中的内容复制到文件filename2中去。
    //file copy program.
    #include <stdio.h>void main(int argc,char *argv[]) //命令行参数
    {
    int ch;
    FILE *in,*out; //定义in和out两个文件类型指针 if(argc!=3) //判断命令行是否正确
    {
    printf(“Error in format,Usage: copyfile filename1 filename2”);
    return; //命令行错,结束程序的执行
    } //按读方式打开由argv[1]指出的文件 if((in=fopen(argv[1],“r”))==NULL)
    {
    printf(“The file <%s> can not be opened.”,argv[1]);
    return; //打开失败,结束程序的执行
    } //成功打开了argv[1]所指文件,再
    //按写方式打开由argv[2]指出的文件 if((out=fopen(argv[2],“w”))==NULL)
    {
    printf(“The file %s can not be opened.”,argv[2]);
    return; //打开失败,结束程序的执行
    } //成功打开了argv[2]所指文件
    ch=fgetc(in); //从in所指文件的当前指针位置读取一个字符 while(ch!=EOF) //判断刚读取的字符是否是文件结束
    {
    fputc(ch,out); //若不是结束符,将它写入out所指文件 ch=fgetc(in); //继续从in所指文件中读取下一个字符
    } //完成将in所指文件的内容写入(复制)到out所指文件中 fclose(in); //关闭in所指文件
    fclose(out); //关闭out所指文件
    }

    展开全文
  • c语言文件操作函数

    2017-04-08 15:05:05
    1.fopen FILE* fopen(const char* filename,const char* mode);filename文件路径+文件名,mode,文件打开方式。返回值,成功,返回文件指针,失败,返回NULL。...写方式打开文件文件存在则清空

    1.fopen

    FILE* fopen(const char* filename,const char* mode);filename文件路径+文件名,mode,文件打开方式。返回值,成功,返回文件指针,失败,返回NULL。

    mode的值:

    r/rb

    只读方式打开一个文本文件,文件不存在,报错

    w/wb

    写方式打开文件,文件存在则清空文件,不存在创建新文件

    a/ab

    追加方式打开文件,在文件末尾添加内容,文件不存在,则创建

    r+/rb+

    读写方式打开文件,不创建新文件

    w+/wb+

    可读可写方式打开文件,文件存在则清空文件,文件不存在则创建文件

    a+/ab+

    追加方式打开文件,在末尾更改文件,文件不存在,则创建

    2.fclose

    int fclose(FILE* fp);关闭fp指向的文件让缓冲区的数据写入文件,并释放文件资源。

    3.fputc

    int fputc(char ch,FILE* fp);将ch写入fp指定的文件中。返回值,成功,返回写入文件的字符,失败,返回-1.

    4.fgetc

    int fgetc(FILE* fp);从fp指向的文件中读取一个字符,成功,返回读取到的字符,失败,返回-1.

    5.feof

    int feof(FILE* fp);返回非零值,到达文件末尾,返回0,没有到达文件末尾。

    6.fputs

    int fputs(const char* str,FILE* fp);将str指定的字符串写入到fp指定的文件中,\0不写入文件。返回值,成功,返回0,失败,返回-1.

    7.fgets

    char* fgets(char* str,int size,FILE* fp);从fp指向的文件中读入字符,保存到str所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size-1个字符为止,最后会自动加上\0作为字符串结束。返回值,成功,返回读取的字符串,读到文件末尾或出错,返回NULL。

    8.fprintf

    int fprintf(FILE* fp,char* format,...);根据参数format字符串来转换并格式化数据,然后将结果输出到stream指定的文件中,直到出现字符串结束符\0为止。返回值,成功返回实际写入文件的字符个数,失败,返回-1.

    9.fscanf

    int fscanf(FILE* fp,const char* format,..);用法和fprintf一样。返回值,成功,返回转换值的个数,失败,返回-1.

    10.fwrite

    size_t fwrite(const void* ptr,size_t size,size_t nmemb,FILE* fp);ptr:准备写入文件数据的地址,nmemb写入文件的块数,fp文件指针。返回值,成功,返回实际写入的内容的块数,失败,返回0.

    11.fread

    size_t fread(void* ptr,size_t size,size_t nmemb,FILE* fp);ptr存放读取出来数据的内存空间,nmemb读取文件的块数,fp文件指针。返回值,成功返回实际读到的内容块数,失败,返回0。

    12.fseek

    int fseek(FILE* fp,long offset,int whence);fp文件指针,offset移动的位数,whence的取值:SEEK_SET (0)文件开头,SEEK_CUR(1)文件当前位置,SEEK_END(2)文件末尾。返回值,成功,返回0,失败,返回-1.

    13.rewind

    void rewind(FILE* fp);把读写位置移动到文件开头,无返回值。

    14.ftell

    long ftell(FILE* fp);获取文件光标的位置。返回值,成功返回当前文件流的读写位置,失败,返回-1.

    展开全文
  • 1)//使用fread函数文件中的记录逐条读取到结构体数组  count++;  }  fclose(fp); //关闭文件  if (count==0) //判断当前通讯录是否为空  printf("当前...
  • C语言的流函数

    2019-10-03 19:47:37
    一.fopen 成功返回流指针fp ,失败返回null fopen(char * pathname,... w 或wb 写文件,有则文件内容清空,没有则创建新文件 a 或ab 文件末尾添加,有则添加,没有则创建 二.fclose (fp) 成功返回0,失败返回...

    一.fopen 成功返回流指针fp ,失败返回null

       fopen(char * pathname,const char *mode);

       mode:r或rb 只读方式打开

               w 或wb 写文件,有则文件内容清空,没有则创建新文件

               a 或ab 文件末尾添加,有则添加,没有则创建

    二.fclose (fp) 成功返回0,失败返回EOF

       fcolseall() 关闭所有流,成功返回关闭数,失败返回EOF

    三,读写

     字符:int fgetc(fp) 读取字符,并转换成int格式

            int  getc(fp) 可以作为宏

            int getchar() 即 getc(stdin)

           int fputc(int c ,fp)  成功返回c 否则返回EOF

           int putc(int c,fp)  常用较快的宏实现

     

    行 :  char * fgets(char * buf,int count,fp)  d读取字符直至换行符或者count-1 末尾添加'\0',保留换行符 成功返回 buf 否则返回NULL

            char * gets(char * buf)  从stdin读取一行,删除换行符,添加'\0'

            int  fputs(char *str,fp) 把以'\0'结尾的字符串输出fp中 ,不一定一次输出一行

            int  puts(const char *str)  把以'\0'结尾的字符串输出fp中 ,不输出'\0',一定输出换行符

    块: fread(&data2,sizeof(float),2,fp)   size 大小为字节,返回count

           fwrite(&item,sizeof(item),1,fp)

    三.流定位

       1.long int ftell(fp)  返回从问价开始的字节数,否则返回-1

       2.int fseek(fp,long int offet,int where)  offet 偏移 where 为 SEEK_SET 开始 SEEK_CUR SEEK_END   成功返回0,否则返回非0  用于改变fp指向流文件的位置

         fseek(fp,(long)i*sizeof(struct record),0) 0 表示文件开始

      3.rewind (fp) 定位fp指向开始

      4.int fgetpos(fp,fpos_t pos) 得到读写指针的位置 成功返回0 否则返回非0

        int fsetpos(fp,fpos_t pos) 设定指针位置

     

    四.结束

    1.int ferror(fp) 流错误指向器被设置返回1,否则返回0

    2.int feof(fp)文件结束返回非0否则返回0

    3,clearerr(fp)清除指示器

     

    五输出

    printf(char *format,) 标准输出

    fprintf(fp,char *format,)输出到fp流

    sprintf(char *buf,char *format)输出到缓冲区,并且自动末尾加结束符

     

     

    scanf(char *format,&num) 标准输入

    fscanf(fp,char *format,&num)输出到fp流

    sscanf(char *buf,char *format,&num)输出到缓冲区,并且自动末尾加结束符

    转载于:https://www.cnblogs.com/ranranblog/p/5561467.html

    展开全文
  • C语言文件操作详解

    万次阅读 多人点赞 2015-12-11 16:46:40
    C语言文件操作函数 函数介绍 文件打开与关闭操作 fopen():文件打开操作 头文件:stdio.h 函数定义:FILE *fopen(char *pname, char *mode) 函数说明:pname是文件名,mode是打开文件的方式 mode:"r" 打开一...
  • 所以C语言中定义了文件操作的函数,用来操作内存外部可以永久存储数据的介质(磁盘、闪盘等)。 对于操作不同长度的数据类型,C语言中定义了不同的文件操作函数。 1 读写一个字符的函数fputc()和fgetc(); fputc()...
  • C语言文件操作

    2019-10-06 23:10:17
    C语言实现的对文件的读写操作,能够对指定行进行读操作,对文件进行追加内容以及清空内容重新写入等功能。自己平时用的函数,整理较好,能够直接调用。
  • 0.getchar()、putchar()输入缓冲区,键盘输入是“行缓冲”遇到一个换行符的时候清空缓冲区。标准流,stdin和stdout,是标准的输入输出流,键盘输入就是用的stdin。文件结尾,C不关心操作系统是如何检测文件结尾,C在...
  • C语言文件相关函数主要有以下几种: FILE* fopen(char* filepath, char* mode); 打开文件函数,传入文件地址和打开模式文件打开模式包括 "r" 读取 ,"w" 写入模式,将现有文件清空。如果不存在则创建文件 ,"a" ...
  • C语言文件处理:  r:以只读打开文件,如果文件不存在,则返回空指针,打开失败。  w: 以只写打开,没有文件就新建文件,有文件就会清空文件,然后写入。  a:以追加模式打开,没有文件也会新建,但不会...
  • 函数名: fflush头文件:函数原型: int fflush(FILE *stream);功 能: 清除一个流。清除输入流的缓冲区,使它仍然打开,并把输出流的缓冲区的内容写入它所联系的文件中。参 数: stream要清除的流返回值: 成功 返回0 ...
  • fflush()用于清空文件缓冲区,如果文件是以写的方式打开 的,则把缓冲区内容写入文件。其原型为:  int fflush(FILE* stream); 【参数】stream为文件指针。 【返回值】成功返回0,失败返回EOF,错误代码存于...
  • c语言清空文件中数据A. 主程序B. 子程序C. 函数D. 过程正确答案:C 满分:5分3.一个C语言程序总是从()开始执行。A. 主程序B. 子程序C. 主函数D. 函数正确答案:C 满分:5分4.以下叙述中最准确的是()A. 计算机程序是...
  • c语言清空缓存 的问题

    千次阅读 2012-09-11 09:46:06
    我们使用函数向某个文件从当前流标签所在位置,读取n个字符。我们也会使用函数文件的某个流位置写如n字符。但是,当这种写的动作小、而频繁。每次写又必须反映到硬盘上,也就是说需要频繁的操作硬盘,写一些小的...
  • 参考书目:周兆熊《C程序员从校园到职场》 一、内存操作函数 ...用 法:除了可用于对指定位置设定值之外,还可以用于内存空间初始化,内存简单复制,清空一个结构类型的变量或数组等。 memcpy——void ...
  • C语言清空scanf缓存

    2020-11-26 17:15:41
    c语言中写有关于输入函数函数时常常回遇到输入乱码和无法输入的情况 程序的逻辑关系看似没有问题,但是运行的时候会发现递归函数根本没有结束 重新看代码虽说逻辑上没有问题,但是运行条件有疏漏。没有进行对...
  • Linux 中C语言如何清空标准输入流

    千次阅读 2009-11-17 20:57:00
    今天在Linux程序设计的时候需要清空标准输入缓冲区,于是使用了如下Windows程序设计中的方法:1.fflush(stdin);这个fflush()函数根本不是标准C中的函数,...但是它是文件操作中的一个函数,操作的是FILE型流,在Win
  • 普通文件io总结file结构体... /*填充/清空一级缓存*/unsigned flag; /*文件状态指针*/char fd; /*文件描述符*/unsigned char hold; /*ungetc char if no buffer*/int bsize; /*缓存区大小*/unsigned char *buffer...
  • C语言中如何清空输入输出缓冲区答案:5信息版本:手机版解决时间 2019-10-06 09:40已解决2019-10-05 13:54C语言中如何清空输入输出缓冲区最佳答案2019-10-05 15:11最简单的是用fflush()函数。此函数包含在stdio.h...
  • 普通文件IO总结 FILE结构体 typedef struct { int level; /*填充/清空一级缓存*/ unsigned flag; /*文件状态指针*/ char fd; /*文件描述符*/ unsigned char hold; /*ungetc char if no buffer*/ i...
  • 一、准备知识 1、WIN32_FIND_DATA数据结构  WIN32_FIND_DATA结构描述了一个由FindFirstFile, FindFirstFileEx, 或FindNextFile函数查找到的文件信息。  结构内容如下: typ
  • 2. w:若文件不存在则创建文件,若存在此文件清空文件内容并打卡 3. a:若文件不存在则创建文件,若存在则在末尾追加(不会清空文件的内容) 返回值:若打开成功则返回FILE *,若打开失败则返回NULL 例如: FILE...
  • 0.getchar()、putchar() ...文件结尾,C不关心操作系统是如何检测文件结尾,C在检测到文件结尾之后返回EOF。 getchar();——从输入缓冲区读取一个字符,不管字符是什么,都读取。 putchar()——打印一个字符,没...
  • 1、fopen():文件打开操作 头文件:stdio.h 函数定义:FILE *fopen(char *pname, char *mode) ...以“r+”的方式打开一个文件,会清空文件的原始内容,重新写入数据 返回值:正常返回:FILE *一个指向文件在内存...

空空如也

空空如也

1 2 3 4 5
收藏数 98
精华内容 39
关键字:

c语言文件清空函数

c语言 订阅