点击这里给我发消息 点击这里给我发消息

c语言IO库函数学习

添加时间:2013-12-7
    相关阅读: C语言 VC
副标题#e#
  看下面的代码,通过代码来学习C语言IO库函数

/*
  #include <stdio.h>
  int sprintf( char *buffer, const char *format, ... );

  #include <stdio.h>
  int printf( const char *format, ... );
  已有介绍

  #include <stdio.h>
  int fprintf( FILE *stream, const char *format, ... );
  类似上两函数,只是该函数用于文件操作

  #include <stdio.h>
  int scanf( const char *format, ... );
    函数以给定字符串的格式从标准输入流中读入数据(stdin)
    将数据保存在给定参数中,它忽略空格(tab,spaces,etc)
    跳过不符合的字符,返回被赋值的变量数,若出错返回EOF
    控制符如下:
        %c a single character  
        %d a decimal integer  
        %i an integer  
        %e, %f, %g a floating-point number  
        %o an octal number  
        %s a string  
        %x a hexadecimal number  
        %p a pointer  
        %n an integer equal to the number of characters read so far  
        %u an unsigned integer  
        %[] a set of characters  
        %% a percent sign  
    scanf()会将输入的数据根据参数format字符串来转换并格式化数据。Scanf()格式转换的一般形式如下
    %[*][size][l][h]type
    以中括号括起来的参数为选择性参数,而%与type则是必要的。
    * 代表该对应的参数数据忽略不保存。
    size 为允许参数输入的数据长度。 [Page]
    l 输入的数据数值以long int 或double型保存。
    h 输入的数据数值以short int 型保存。
    [] 读取数据但只允许括号内的字符。出现其他字符则终止。如[a-z]。
    [^] 读取数据但不允许中括号的^符号后的字符出现,如[^0-9]. 
    返回值  成功则返回参数数目,失败则返回-1,错误原因存于errno中。

  #include <stdio.h>
  int sscanf( const char *buffer, const char *format, ... );
    函数用法同scanf,只是该函数的数据是从buffer中读入的

  #include <stdio.h>
  int fscanf( FILE *stream, const char *format, ... );
  函数类似上函数,只是该函数用于文件操作

  #include <stdio.h>
  char *gets( char *str );
    从标准输入(stdin)中读入一行数据或是遇到错误,并且在最后加入’ ’值

  #include <stdio.h>
  char *fgets( char *str, int num, FILE *stream );
    类似上函数,该函数用与文件操作,返回读到的字符串,如果有错返回EOF,参数num为最多能读的数据(num-1,最后一个为null值)
    若连续用fgets函数读文件中的数据,则应用fseek函数移动文件指针到下一行初(fseek(file, 2, SEEK_CUR)
    在windows中,换行为两个字符,即回车换行

  #include <stdio.h>
  int getchar( void );
    从stdin中读入一个字符返回,注意返回为int型

  #include <stdio.h>
  int fgetc( FILE *stream );
    返回文件流中的下一个字符,返回EOF如果读到文件末尾或发生错误

  #include <stdio.h>
  int getc( FILE *stream );
    同上一个函数

  #include <stdio.h>
  int putchar( int ch );
    在stdin中写入一个字符,返回EOF如果出错,否则返回写入的字符

  #include <stdio.h>
  int putc( int ch, FILE *stream );

#p#副标题#e#

 

   在文件流中写入一个字符,返回EOF如果出错,否则返回写入的字符

  #include <stdio.h>
  int puts( char *str );
    在文件中写入str字符,如果出错返回EOF值,否则返回非负数值 [Page]

  #include <stdio.h>
  int fread( void *buffer, size_t size, size_t num, FILE *stream );
    读入文件中的数据到buffer,总共大小为num,size表明读入类型的字节大小,返回值为读入的字节数

  #include <stdio.h>
  int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
    函数将buffer中的内容写入文件中,总共写入cout个size大小的数据,返回写入数据大小的字节数

  #include <stdio.h>
  int feof( FILE *stream );
    如果文件没有读到末尾,返回0,否则返回非0

  #include <stdio.h>
  int ferror( FILE *stream );
    若文件没有错误发生,返回0,否则返回非0

  #include <stdio.h>
  void perror( const char *str );
    打印字符串str和errno相关的错误信息

  #include <stdio.h>
  void clearerr( FILE *stream );
    重新设置stream的错误标识和EOF指示器(错误标识不会自动清除,除非调用clearerr, fseek, fsetpos, or rewind 等函数)

  #include <stdio.h>
  int fclose( FILE *stream );
    函数关闭stream文件,释放所有和stream相关的内存资源

  #include <stdio.h>
  FILE *fopen( const char *fname, const char *mode );
    函数fname指定的文件,若文件不存在,则新建该文件,mode表示打开文件的模式,若出错,返回NULL
    \"r\" Open a text file for reading  
    \"w\" Create a text file for writing  
    \"a\" Append to a text file  
    \"rb\" Open a binary file for reading  
    \"wb\" Create a binary file for writing  
    \"ab\" Append to a binary file  
    \"r+\" Open a text file for read/write  
    \"w+\" Create a text file for read/write   [Page]
    \"a+\" Open a text file for read/write  
    \"rb+\" Open a binary file for read/write  
    \"wb+\" Create a binary file for read/write  
    \"ab+\" Open a binary file for read/write

  #include <stdio.h>
  int fgetpos( FILE *stream, fpos_t *position );
    函数将给定文件的指针存入position变量中,函数成功返回0,否则返回非0
    fpos_t类型:long integer, __int64, or structure, depending on the target platform

  #include <stdio.h>
  int fsetpos( FILE *stream, const fpos_t *position );
    函数用于设定文件指针,其他规则同fgetpos函数

  #include <stdio.h>
  FILE *freopen( const char *fname, const char *mode, FILE *stream );
    函数重新定向stream的文件流到指定文件的文件流,mode用于指定文件的访问方式
    函数返回NULL值如果出错,否则返回新文件的文件指针
    注:可用该函数打开一个文件,并一stdout,stdin做参数,此时可以用在控制台上的函数操作文件
        但是有一个问题需要解决,怎样把stdout,stdin的指针重新弄回来,以使控制台的输入输出还可用
        因为该函数执行后会将原来的文件流(stream)指针关闭。在VC中可以通过结合dup和fdopen函数来实现
        但是在C语言函数库中还不知道用什么函数可以去实现

  #include <stdio.h>
  int fseek( FILE *stream, long offset, int origin );
    函数设置文件流stream指针到给定的偏移量,偏移量与origin相对而言

#p#副标题#e#

 

 origin可取值:
        SEEK_SET Seek from the start of the file  
        SEEK_CUR Seek from the current location  
        SEEK_END Seek from the end of the file  
    函数返回0为成功,非0为失败,该函数可以清除EOF标记 [Page]

  #include <stdio.h>
  long ftell( FILE *stream );
    函数返回指定文件的当前指针的位置,若出错返回-1

  #include <stdio.h>
  int remove( const char *fname );
    函数关闭fname名字所指定文件流,返回0为成功执行函数,非0为失败

  #include <stdio.h>
  int rename( const char *oldfname, const char *newfname );
    函数更改文件的名字,返回0为成功,非0为失败

  #include <stdio.h>
  void rewind( FILE *stream );
    函数将指定文件的指针移动到文件的开始处,并清除文件的EOF标识

  #include <stdio.h>
  void setbuf( FILE *stream, char *buffer );
    函数设置文件的缓存区buffer,若buffer为NULL值,则文件写入没有缓冲

  #include <stdio.h>
  int setvbuf( FILE *stream, char *buffer, int mode, size_t size );
    函数用特定的模式设置文件的缓冲区及大小
    mode可取值:
        _IOFBF, which indicates full buffering 
        _IOLBF, which means line buffering 
        _IONBF, which means no buffering 

  #include <stdio.h>
  FILE *tmpfile( void );
    函数打开一个临时文件并返回这个临时文件的指针,失败则返回NULL

  #include <stdio.h>
  char *tmpnam( char *name );
    函数创建一个临时文件的文件名,保存在name中

  #include <stdio.h>
  int ungetc( int ch, FILE *stream );
    函数将ch字符放回stream文件中

  #include <stdarg.h>
  #include <stdio.h>
  int vprintf( char *format, va_list arg_ptr );
  int vfprintf( FILE *stream, const char *format, va_list arg_ptr );
  int vsprintf( char *buffer, char *format, va_list arg_ptr ); [Page]
    These functions are very much like printf(), fprintf(), and sprintf(). 
    The difference is that the argument list is a pointer to a list of arguments. 
    va_list is defined in stdarg.h, and is also used by (Other Standard C Functions) 
    va_arg(). For example: 

    void error( char *fmt, ... ) {
     va_list args;
     va_start( args, fmt );
     fprintf( stderr, \"Error: \" );
     vfprintf( stderr, fmt, args );
     fprintf( stderr, \"/n\" );
     va_end( args );
     exit( 1 );
   }        


*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/**//*void main()
{
    char setTest[10];
    scanf(\"%[a-z]\", setTest);
    printf(\"%s \", setTest);
}*/

/**//*void main( void )
{
   int c;
   //Create an error by writing to standard input. 
   putc( ’c’, stdin );
   if( ferror( stdin ) )

#p#副标题#e#

 


   {
      perror( \"Write error\" );
      clearerr( stdin );
   }

   // See if read causes an error. 
   printf( \"Will input cause an error? \" );
   c = getc( stdin );
   if( ferror( stdin ) )
   {
      perror( \"Read error\" );
      clearerr( stdin );
   }
}*/

/**//*void main()
{
    char read[100];
    FILE *orig_stdout = (FILE*)malloc(sizeof(FILE)); [Page]
    memcpy(orig_stdout, stdout, sizeof(FILE));
    FILE *filew = freopen(\"test.txt\", \"w\", stdout);
    //freopen(\"test.txt\", \"w\", stdout);
    if(filew == stdout)
        printf(\"equal\");
    printf(\"We can write datum in file test.txt use printf function with the use of freopen\");
    fclose(filew);
/*    memcpy(stdout, orig_stdout, sizeof(FILE));
    FILE *filer = freopen(\"test.txt\", \"r\", stdin);
    //freopen(\"test.txt\", \"r\", stdin);
    gets(read);
    fclose(filer);
    printf(\"%s\", read);
    printf(\"%c\", read[0]);
    printf(\"jd;salkjf\");
*/
//    rename(\"test.txt\", \"newname.txt\");
/

相关c语言IO库函数学习

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册