首页 > 代码库 > C语言文件操作函数(基本篇)

C语言文件操作函数(基本篇)

void clearerr (FILE *stream):

重置错误标记和给出的流的EOF指针

int feof ( FILE *stream) :

到达文件流的文件尾时返回一个非零值

int ferror ( FILE *stream ):

是否发生错误,没有返回零,否则返回一个非零值

void perror ( const char *str):

打印str和相应的执行错误到errno(全局变量)中

int fclose ( FILE *stream ):

关闭给出的文件流,释放已关联到流的缓冲区,执行成功返回零,否则返回EOF

int fgetc ( FILE *stream ):

返回来自stream中的下一个字符,到达文件尾或错误返回EOF(fputc返回的也是字符和EOF)

getc  putc  fgetc  fputc 等同 (但是据说getc和putc的效率更高,我现在还理解不了)

int fgetpos ( FILE *stream, fpos_t *position):

(fpos_t 在stdio.h中定义)保存给出的文件流的位置指针到给出的变量position中,成功返回零值,失败返回非零值

int fsetpos ( FILE *stream, const fpos_t  *position):

将指针移动到position,成功返回零值,失败返回非零值

long ftell ( FILE  *stream ):

返回流当前的文件位置,错误返回 -1

char  *fgets (char  *str, int num, FILE  *stream):

从文件流中读取[num-1]个字符并且转储到str中

1.fgets() 在到达行末时停止,str将会被一个新行符结束

2.fgets()达到[num-1]个字符或者遇到EOF,str以NULL结束

成功返回str,失败返回NULL

fscanf : 返回值是事实上已赋值的变量的个数,如果未进行任何分配,返回EOF

fprintf : 返回值是输出的字符数,发生错误返回负值  ( -1? Try it!!)

 

FILE  *freopen ( const char  *fname, const char  *mode, FILE  *stream ):

freopen 用于再分配一个已存在的流给一个不同的文件和方式(mode)在调用本函数后,给出的文件流将会用mode方式引用fname,成功返回流,失败返回NULL

int  fseek ( FILE  *stream, long offset, int origin ):

成功返回零,失败返回非零, 你可以使用fseek()移动超过一个文件(!!),但是不能在开始处之前,使用fseek清除关联到流的EOF标记

int fread ( void  *buffer, size_t  size, size_t  num, FILE  *stream):

函数fread()读取[num]个对象(每个大小为size),替换到buffer,返回值为读取的内容数量

int  fwrite ( const void *buffer, size num, FILE  *stream ) :

返回值是已写的对象的数量

char  *gets ( char  *str):

gets函数(注意和fgets的不同)从STDIN 读取字符并把它们加载到str里,直到遇到新行\n或到达EOF,新行字符翻译为一个NULL中断符 

返回值是读入的字符串,错误返回NULL

int  puts ( char  *str ):

把字符串写到STDOUT 成功返回非负值,失败返回EOF

int  remove ( const char  *fname ):

删除由fname指定的文件, 成功返回0,错误返回非零

int  rename ( const char  *oldfname, const char  *newfname ):

成功返回0, 错误返回非零

void rewine ( FILE  *stream):

移至流的开始处,同时清除和流相关的错误和EOF标记

int  sscanf ( const char *buffer, const char  *format, ...);  从buffer中读

int sprintf ( const  *buffer, const char  *format, ....);  输出发送到buffer中

=============================================================================

下面的内容摘抄自网络:

=============================================================================

1. 常见用法。

以下是引用片段:
  charstr[512]={0};
  sscanf("123456","%s",str);
  printf("str=%s",str);

  2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。

以下是引用片段:
  sscanf("123456","%4s",str);
  printf("str=%s",str);

  3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。

以下是引用片段:
  sscanf("123456abcdedf","%[^]",str);
  printf("str=%s",str);

  4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。

以下是引用片段:
  sscanf("123456abcdedfBCDEF","%[1-9a-z]",str);
  printf("str=%s",str);

  5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。

以下是引用片段:
  sscanf("123456abcdedfBCDEF","%[^A-Z]",str);
  printf("str=%s",str); 

另外,format不仅可以用空格界定字符串,还可以用其他字符界定,可以实现简单的字符串分割(更加灵活的字符串分割请使用strtok())。例如:
    sscanf("2006:03:18", "%d:%d:%d", a, b, c);
    sscanf("2006:03:18 - 2006:04:18", "%s - %s", sztime1, sztime2);

 

C语言文件操作函数(基本篇)