分享

[学习标准库]stdio.h

 WUCANADA 2011-12-11

[学习标准库]stdio.h

 

  本文所总结的内容是我学习头文件cstdio与stdio.h并查阅书籍和网络所得。
  stdio.h,应该是跟我差不多学习经历(C-->C++-->?)的人所接触到的第一个头文件,说它是最熟悉用得最多的头文件之一应该一点也不为过。可是,对它,我除了经常用到的printf与scanf,又知之几何呢?
  这里循cstdio头文件(i386-pc-mingw32 gcc 4.5.0版)里using的顺序来记录。
_GLIBCXX_BEGIN_NAMESPACE(std)

  using ::FILE;
  using ::fpos_t;

  using ::clearerr;
  using ::fclose;
  using ::feof;
  using ::ferror;
  using ::fflush;
  using ::fgetc;
  using ::fgetpos;
  using ::fgets;
  using ::fopen;
  using ::fprintf;
  using ::fputc;
  using ::fputs;
  using ::fread;
  using ::freopen;
  using ::fscanf;
  using ::fseek;
  using ::fsetpos;
  using ::ftell;
  using ::fwrite;
  using ::getc;
  using ::getchar;
  using ::gets;
  using ::perror;
  using ::printf;
  using ::putc;
  using ::putchar;
  using ::puts;
  using ::remove;
  using ::rename;
  using ::rewind;
  using ::scanf;
  using ::setbuf;
  using ::setvbuf;
  using ::sprintf;
  using ::sscanf;
  using ::tmpfile;
  using ::tmpnam;
  using ::ungetc;
  using ::vfprintf;
  using ::vprintf;
  using ::vsprintf;

_GLIBCXX_END_NAMESPACE

宏常量 : EOF , FILENAME_MAX , TMP_MAX
内置对象 : stderr , stdin , stdout

FILE

  在stdio.h头文件中定义的结构。一般来说,它用于对文件进行操作的函数的参数或者返回值等等。它在头文件中的定义如下(成员后面的注释援引自百度知道,准确与否我查找资料未果,到后来专门找个时间将FILE结构体解读一下):
typedef struct _iobuf
{
    char*    _ptr;       // 文件输入的下一个位置
    int    _cnt;           // 当前缓冲区的相对位置
    char*    _base;      // 指基础位置(即是文件的起始位置)
    int    _flag;          // 文件状态标志
    int    _file;          // 文件的有效性验证
    int    _charbuf;       // 检查缓冲区状况,如果无缓冲区则不读取
    int    _bufsiz;        // 缓冲区大小
    char*    _tmpfname;  // 临时文件名
} FILE;

fpos_t

  一种类型,包含的指定在一个文件中的位置的信息(Object containing information to specify a position within a file)。是一种基本类型的别名,在MSVCRT下为long long,其它环境下为long。可见其定义:
#ifdef __MSVCRT__
typedef long long fpos_t;
#else
typedef long    fpos_t;
#endif

clearerr

  功能 :重置流的error与EOF指示器。当一个使用流的功能因为error或者EOF而失败时,一个或多个内部指示器会被设置,这些指示器会一直有效直到调 用clearerr、rewind、fseek或fsetpos为止。比如说当使用fopen打开一个文件而只给"r"权限,当试图对它进行"w"操作时 就会产生错误,这时需要使用本函数来重置指示器信息。
  用法 :clearerr(FILE *pFile),返回void。

fclose

  功能 :关闭与流关联的文件并取消关联。与这个流相关联的所有内部缓冲区将被刷新;缓冲区中还没有写入的内容及没有读的内容都将被丢弃。即使函数调用失败,这个流将与文件失去了关联。
  用法 :fclose(FILE *pFile),返回int值,如果函数执行成功,将返回0,否则返回EOF。

feof

  功能 :检查与文件相关联的流的EOF指示器的状态。
  用法 :feof(FILE *pFile),返回int值,如果EOF置位,返回非零值,否则返回零值。

ferror

  功能 :检查与文件相关联的流的error指示器的状态,通常该指示器是因为对已经产生错误的流的过早操作。
  用法 :ferror(FILE *pFile),返回int值,如果error指示器置位,返回非零值,否则返回零值。

fflush

  功能 :刷新流。如果给定的流打开是为了写操作并且上一个I/O操作是输出,在输出缓冲区中的任何不成文的数据将被写到文件。如果给定的流打开是为了读操作并且 上一个操作是输入操作,行为取决于具体的库实现。在某些实现中这次导致输入缓冲区被清除,但是这不是标准的行为。如果参数是一个空指针,所有打开的文件将 被刷新。流在这个调用之后将保持打开。如果一个文件因为对fclose的调用或者程序终止而关闭,所有与其有关的缓冲区都将被自动刷新。
  用法 :fflush(FILE *pFile),返回int型值,零值表示成功,若发生错误将返回EOF且错误指示器将被设置。

fgetc

  功能 :从流中获取字符。返回指定流的内部文件位置指示器当前指向的字符。内部文件位置指示器向前移动一个字符指向下一个字符。
  用法 :fgetc(FILE *pFile),返回int型值,正常情况下返回该字符的ASCII值,如果出错或者到达EOF,则返回EOF并且设置error和EOF指示器。

fgetpos

  功能 :获取在流中的当前位置。获取唯一指定的流中位置指示器并且将其保存到指向位置的fpos_t类型变量。
  用法 :fgetpos(FILE *pFile, fpos_t *pos),正常时返回零值,出错时返回非零int值。

fgets

  功能 :从流中读取多个字符并且将它们以C风格字符串存储到char*类型参数直到指定字符-1个字符已经读取或者一个换行或者到达EOF为止。换行符会让 fgets停止读取,但是它会被当作有效字符它会被包含到目标字符串里面去。C风格字符串默认会将一个空字符添加到获取的字符串后面。
  用法 :fgets(char *str, int num, FILE *pFile),str将存储目标字符串,num指示读取字符数+1。返回值为char*类型。如果正常读取,将返回str,如果没有字符被读取并且到达 EOF,str的值将不变且返回空指针。如果有错误发生,会返回空指针。

fopen

  功能 :以指定的模式打开指定名字的文件,将其与一个可以对文件进行操作的流进行关联并返回FILE*。打开模式决定了流能对文件进行哪些操作。
  用法 :fopen(const char* filename, const char* mode),返回FILE*。文件名为C风格字符串,而mode可以为"r","w","a","+","b"几种模式的组合,常见的组合如下:
  "r"-->打开文件,并读取文件内容,若文件不存在,将会发生错误。
  "w"-->打开文件,并清除其内容,重新准备写入数据,若文件不存在,则建立新文件。
  "a"-->若文件已存在,则新写入的数据直接从文件末端接入。
  "r+"-->打开文件,可提供读/写,若文件不存在,则发生错误。
  "w+"-->打开文件,可提供读/写,若文件已存在,则清除其内容。
  "a+"-->打开文件,可提供读/写,但写入数据仅能接在源文件之后。
  "rb"-->打开二进制文件,并读取文件内容,若文件不存在将发生错误。
  "wb"-->打开二进制文件,并清除其内容,重新准备写入数据,若文件不存在,则建立新文件。
  "ab"-->打开二进制文件,若文件已存在,则新写入的数据直接从文件末端接入。
  "r+b"-->打开二进制文件,可提供读/写,若文件不存在,则发生错误。
  "w+b"-->打开二进制文件,可提供读/写,若文件已存在,则清除其内容。
  "a+b"-->打开二进制文件,可提供读/写,但写入数据仅能接在源文件之后。

fprintf

  功能 :将格式化过的输出写到流。将数据序列以格式参数指定的格式化之后见到指定流。在格式参数之后函数还需要至少在格式参数里指定的那么多个参数。
  用法 :fprint(FILE *pFile, const char *format, ...)。如果成功,写入字符总数将被作为int型返回,否则将返回负值。其中format参数中指定附加参数时格式为:
  %[flags][width][.precision][length]specifier
  其中specifier是最重要的一个,它定义参数类型和说明,可能的值为:
  "c"-->字符。
  "d OR i"-->带符号十进制整数。
  "e"-->用e表示的科学计数法。
  "E"用E表示的科学计数法,"f"-->十进制浮点数。
  "g"-->use the shorter of %E or %f。
  "G"-->use the shorter of %E or %f。
  "o"-->八进制,"s"-->字符串。
  "u"-->无符号十进制整数。
  "x"-->无符号十六进制整数。
  "X"-->无符号十六进制整数(使用大写字母)。
  "p"-->指针地址。
  "n"-->无输出,该参数必须是一个带符号整型。
  "%"-->%%表示转义,将输出%。
  flags的可能值:
  "-"-->以给定字符宽度对齐。
  "+"-->在结果前面都加上(+或-),默认情况下,只有负数才加上"-"。
  (space)-->如果没有符号将被打印,则一个空格将被插入到值之前。
  "#"-->与o,x或X一起使用时指定非零值以0,0x或0X开始;与e,E和f一起使用时,将强制输出一个小数点即使后面没有数字;与g或G一起使用时与和e,E一样但是最后的零将不会被去掉。
  "0"-->左边用0而不是空格填充。
  width的可能值:
    (number)-->最小打印的数字个数,若值的位数不够则用空格填充,若值超过也不会被截断。
  "*"-->宽度不指定,但在成为附加整形参数之前参数必须已经被格式化过。
  .precision的可能值:
  .number-->对d,i,o,u,x,X来说,precision指定需要被写的最少数字个数。如果值比它短,值将在前面用0填充,值过 大将不会被截断,number为0表示当值为0时将没胡输出;对e,E和f来说,number指定小数点后位数;对g,G来说,将会是最大有效数字;对s 来说,将会是输出的最大字符数;对c来说这没有影响。如果没有precision被指定,缺省为1。
  .*-->精度在格式化字符串中未指定,附加整型参数之前必须已经被格式化过。
  length的可能值:
  "h"-->参数被转换为short int或unsigned short int,只适用于i,d,o,u,x和X。
  "l"-->参数被转换为long int或unsigned long int当与i,d,o,u,x,X一起使用时,宽字符或宽字符串当与c,s一起使用时。
  "L"-->参数被转换为long double当与e,E,f,g,G一起时。

fputc

  功能 :写一个字符到指定流,并且位置指示器前进一个。字符将被写到流的内部位置指示器指示的当前位置,指示器随后前进一个字符。
  用法 :fputc(int ch, FILE *pFile),成功则返回该字符,否则返回EOF并设置error指示器。

fputs

  功能 :写一个字符串到指定流。C风格字符串最后的'\0'将不会被写到流。
  用法 :fputs(const char *str, FILE *pFile),返回值为int型,若出错则返回EOF,否则返回无效字符。

fread

  功能 :从流中读取数据块。读取指定个数元素的一组数据,其中每个元素有指定字节数,从流中读取并存放在指定内存块。
  用法 :size_t fread(void *ptr, size_t size, size_t count, FILE *pFile),ptr指向一个至少有size*count大小的内存块,size指示每一个元素的大小,count指示读取元素个数。函数将返回读取的 元素总数,如果它与count不符,那么可能是发生了错误或者是到达了EOF。

freopen

  功能 :函数将尝试关闭与第三个参数所代表的流所关联的文件并取消关联,然后不管流此时的状态是否为关闭,将打开流并打开指定文件且与其相关联。此函数在将指定文件关联到stdin,stdout,stderr等流时格式有用。
  用法 :FILE* freopen(const char* filename, const char* mode, FILE* stream),mode相关信息详见fopen函数说明。成功则返回确定流的对象,否则返回空指针。

fscanf

  功能 :从流中读取格式化数据。从流中读取数据并存储在附加参数指向的位置。附加参数必须指向在格式参数中指定类型的已经分配的对象。
  用法 :int fscanf(FILE *pFile, const char* format, ...),format中可能包含以下元素:
  1.空白字符。函数会读取并忽略所有空白字符包括空格、换行和制表符直到读到下一个非空字符。可以包含任意数目的空白字符。
  2.除%外的任意非空字符。任意一个不是空白字符且不是以%开头的字符将导致函数从流中读取下一个字符将其与它比较,如果匹配则函数将进行下一个字符的读取与比较。如果不匹配,函数失败并返回,结束读取。
  3.格式指定符。由以%开始的序列形成一个格式说明符,用于指定从流中提取到的数据的类型和格式并将其存储在附加参数中指出的位置。格式说明符的原型如下:
  [=%[*][width][modifiers]type=]
  其中:
  *-->一个可选的起始符号,指示将从流中读取的数据被忽略。
  width-->在当前读操作中读取的最大字符数。
  modifiers-->指定不同于int(在d,i,n情况下),unsigned int(在o,u,x情况下),float(在e,f,g情况下)的附加参数指定的数据的大小。"h"-->short int(在d,i,n),或unsigned short int(在o,u,x)。"l"-->long int(在d,i,n),或unsigned long int(在o,u,x)或double(在e,f,g)。"L"-->long double(在e,f,g)。
  type-->一个指定要读取数据的类型与期望的读取方式,它可能的值如下:
    c-->单个字符。
    d-->十进制整数。可选正负号。
    e,E,f,g,G-->浮点数。可选正负号,可以使用科学计数法。
    o-->八进制整数。
    s-->字符串。读取字符串直到空白字符出现。
    u-->无符号十进制整数。
    x,X-->十六进制整数。
  附加参数期望是引用(指针)类型,如果你想将fscanf读取来的数据存储到一个一般变量,则需要加&符号。如:fscanf(pFile, "%d", &n);
  函数时返回成功读取的元素个数。这个计数比期望的读取数少或者相等,在匹配失败的情况下甚至是0。在没有数据被成功读取时失败则返回EOF。

fseek

  功能 :重新定位流的位置指示器。将与流关联的位置指示器设置到一个新的由第三个参数指定的引用位置加上第二个参数指定的偏移量而定义的新的位置。在调用了此函 数之后EOF指示器将被清除,ungetc函数所产生的所有影响将被丢弃。当在文本文件使用fseek和ftell时,记住在一些平台上对文本文件进行格 式转换时将导致意想不到的重定位。在开放的可以读写的流上,对fseek的调用可以对读和写之间进行切换。
  用法 :int fseek(FILE *pFile, long int offset, int origin),offset指示相对origin的偏移量,origin可能的取值为:SEEK_SET,文件起始;SEEK_CUR,文件指针当前位 置;SEEK_END,文件尾。成功返回零值,否则返回非零值。

fsetpos

  功能 :定位流位置指示器。将流位置指示器定位到一个由值由fgetpos函数获取的fpos_t指针指向的位置的新的位置。产生的其它影响与fseek相同。
  用法 :int fsetpos(FILE *pFile, const fpos_t *pos)。成功则返回零值,否则返回非零值且将全局errno变量设置为某确定值。

ftell

  功能 :获取位置指示器在流中的当前位置。对二进制流,返回值等于从文件起始位置的偏移字节数;对文本流,返回的值不能确保一定是从文件起始位置的偏移字节数,但返回值仍可用于重定位流位置指示器到此位置。
  用法 :long int ftell(FILE *pFile),成功则返回当前位置指示器的值,如果出错,返回-1L,设置全局errno变量。

fwrite

  功能 :向流中写数据块。其参数解释等与fread相对应。
  用法 :size_t fwrite(const void *ptr, size_t size, size_t count, FILE *pFile),成功写入的元素数将被返回,如果这个数与count不符,则表明出现了错误。

getc

  功能 :返回指定流的内部文件位置指示器当前所指向的字符,指示器指向下一个字符。它与fgetc功能一样但是可能用宏实现,所以传过来的参数不能是可能导致其它含义的表达式。
  用法 :int getc(FILE *pFile)。读取的字符将被作为int值返回,如果EOF或者读取错误,则返回EOF并且设置error与EOF指示器。

getchar

  功能 :从标准输入获取一个字符。
  用法 :int getchar(),返回获取的字符,若EOF或发生错误,将返回EOF且设置error或EOF指示器。

gets

  功能 :从标准输入获取一个字符串。从标准输入读取一个字符串直到换行符为止并存储到传入的参数,换行符不包括在里面。一个'\0'将自动被添加到字符串的最后。gets没有提供限制读取字数限制,所以你需要自己留意输入的字符数没有超过传入参数所提供的空间。
  用法 :char* gets(char* str),成功则返回str,如果EOF或没读取到字符则str不变且返回空指针。发生错误也返回空指针。

perror

  功能 :打印错误信息。解读全局变量errno的值为一个字符串并且将其打印到stderr(标准错误输出流,通常是屏幕),可选以传入字符串开头。errno是一个全局的描述最近一个错误的变量。
  用法 :void perror(const char* str),如perror("my deferr"),则可能的输出为my deferr: no such files.。

printf

  功能 :打印已格式化字符串到标准输出流。
  用法 :int printf(const char* format, ...),其中format相关请参考上文中fprintf函数。返回所写的总字符数,失败则返回负数。

putc

  功能 :向流中写一个字符。流位置指示器将前进一个字符。putc与fputc功能类似但它可能为宏实现,参数要求不能为可能引起歧义的表达式。
  用法 :int putc(int ch, FILE *pFile),无错则返回ch,否则返回EOF且设置error指示器。

putchar

  功能 :向标准输出流写一个字符。
  用法 :int putchar(int ch),返回ch,若出错则返回EOF且设置error指示器。

puts

  功能 :向标准输出流输出一个字符串。向stdout写入一个字符串并且最后添加一个换行符。字符串最末的'\0'将被忽略。fputs(str, stdout)起同样的效果但最后没有换行符。
  用法 :int puts(const char* str),返回一个非负数,出错返回EOF。

remove

  功能 :删除参数中指定名字的文件。这是一个直接对文件进行的操作。
  用法 :int remove(const char* filename),如果删除成功则返回零值,否则返回非零值并且errno会被设置为相应值。调用perror函数可以向标准流打印错误信息。

rename

  功能 :重命名文件或文件夹。如果旧名字与新的名字在不同的路径,如果操作系统支持文件将被移动到新的位置。
  用法 :int rename(const char* oldname, const char* new name),如果文件被成功重命名,则返回零值;否则返回非零值且设置errno为对应值。errno是一个对应错误类型的数值。调用perror函数可 以向标准流打印错误信息。

rewind

  功能 :定位位置指示器到开始。将与流关联的位置指示器定位到文件的开头,对rewind的调用与fseek(pFile, OL, SEEK_SET)等价,除了一点,就是rewind会清除error指示器。
  用法 :rewind(FILE *rewind),无返回值。

scanf

  功能 :从标准输入流读入指定格式的数据。参数一指定格式与附加参数个数与格式。
  用法 :int scanf(const char* format, ...),其中format的相关内容参见fscanf函数的讲解。返回成功读取的项目数,即附加参数个数,这个数字可能比期望的项目少,匹配失败时甚至 可能是零。如果在任何数据被成功读取之前出现输入失败,返回EOF。

setbuf

  功能 :设置流缓冲区。设置一个缓冲区用于指定全缓冲流的I/O操作,或者如果为缓冲区指定参数是NULL,将禁用流缓冲以致流成为一个无缓冲流。函数必须在文 件与打开的流已经关联但是任何输入输出操作都还没有进行。缓冲区指定参数必须是一个指向至少BUFSIZ大小的数组。对于全缓冲流,写操作将不会被马上执 行到设备,数据将在缓冲区中累积直到缓冲区充满之后被作为一个块写入到设备。当刷新流时这个写操作会被强制执行,也就是当fflush或者fclose函 数被调用时。当程序终止时所有缓冲也会被刷新。对于无缓冲流,数据在每个写操作之后会尽可能快的被写到物理设备。所有文件在打开时都会有一个默认分配流。 这个函数可以用于定义一个用户分配缓冲区或者将一个指定流的缓冲禁用。系统标准流比如stdout和stderr都是无缓冲的除非它们被重定向。如果要更 改为行缓冲流,使用setvbuf。
  用法 :void setbuf(FILE *pFile, char *buffer),buffer的定义大小至少为char buffer[BUFSIZ]。

setvbuf

  功能 :与setbuf功能类似,所不同的是这个函数允许指定缓冲的模式与大小。缓冲的大小(bytes)是由一个参数来指定。如果缓冲未被指定如缓冲参数为 NULL,那么系统会动态分配函数要求的内存量作为流的缓冲。模式参数被用于指定缓冲将会是全缓冲、行缓冲还是无缓冲。全缓冲的情况与setbuf一样。 而当为行缓冲时在每当换行符写入时缓冲将被写到物理设备。
  用法 :int setvbuf(FILE *pFile, char *buffer, int mode, size_t size),操作成功则返回零值;否则返回非零值,比如一个无效的模式或大小或buffer为NULL系统自动分配内存时发生错误。参数说明:mode指 定文件缓冲模式,取值可以为_IOFBF-->全缓冲,_IOLBF-->行缓冲,_IONBF-->无缓冲。size指定缓冲大小。 如果buffer为NULL,那自动分配最小应分配内存;否则必须指定一个不大于buffer的bytes数。

sprintf

  功能 :将格式化的数据写到字符串。将format参数指定的数据序列(一个C风格字符串)写入到str。该函数的行为与printf类似,但它的结果是写到一个字符串而不是stdout。传过来的接受字符串必须有足够大小装纳。
  用法:int sprintf(char *str, const char *format, ...),str是指向char数组的指针,format相关请参见fprintf函数。成功则返回写入总字符数,这个数字不包括最后自动添加的空字符。出错则返回负数。

sscanf

  功能 :从字符串中读取指定格式数据。从指定字符串中读取数据并存储到附加参数指定的位置。
  用法 :int sscanf(const char *str, const char* format, ...),其中format的相关内容参见fscanf函数的讲解。返回成功读取的项目数,即附加参数个数,这个数字可能比期望的少,匹配失败时甚至可能 是零。如果在任何数据被成功读取之前出现输入失败,返回EOF。

tmpfile

  功能 :打开一个临时文件。建立一个临时二进制文件,开放更新(wb+模式,参考fopen函数)。文件名当然要与任何此目录下已存在的不同,文件默认存储在用户的根目录下,即“桌面”的上一级目录。所建立的这个临时文件会在流关闭或者程序正常终止的时候自动关闭。
  用法 :FILE* tmpfile(),如果成功函数返回一个指向所建立的临时文件的流指针。如果文件不能被创建,会返回NULL。

tmpnam

  功能 :生成临时文件名。一个包含文件名且与任何已存在文件不相同的字符串被生成。这个字符串可以被用于创建一个临时文件而不必覆盖任何已存在文件。如果参数为 空指针,那么结果字串会存储在一个可以通过返回值访问的内部静态数组。这个串的内容会一直存在直到对此函数的下一次调用清除它。如果参数不为空指针,它必 须指向一个至少有L_tmpnam字节的数组,它将被所提议的临时文件名所填充。L_tmpnam是<cstdio>中定义的一个宏。这个函 数返回的文件名可以被用于创建一个正常的文件能被fopen作为一个临时文件来使用。这个文件通过这种方式来创建,与那些通过tmpfile函数创建的文 件不一样,在流关闭时不会自动关闭,在不使用它以后,你必须先关闭然后调用remove来删除它。
  用法 :char* tmpnam(char* str),str即指定文件名。返回一个包含目标文件名的C风格字符串指针。如果str是空指针,返回的指针会指向一个将会在下一次调用些函数时被覆盖的 内部缓冲区。如果str不是空指针,那么返回str。如果函数没能创建一个合适的文件名,那么将返回一个空指针。

ungetc

  功能 :将一个字符退回输入流中。一个字符会被添加到流中上一个读取字符的位置,内部文件位置指示器将退回到这个位置。这个字符可以与上一个被读取的字符相同也 可以不同。这只会影响下一个对此字符进行读取的结果,而不会影响到物理文件的内容。文件内容将不会被此函数所影响。如果设置了EOF内部指示器,那么在调 用此函数之后它将被清除。对此流的fseek,fsetpos,rewind都会将之前退回的字符都丢弃。如果传递的参数为EOF,那么操作失败,流不 变。
  用法 :int ungetc(int ch, FILE *pFile),ch表达将会退回的字符,它会被当作int值传递。pFile是一个标识一个输入流的FILE对象指针。

vfprintf

  功能 :将格式化的数据写到指定流中。将使用参数列表中的值来展开的格式字符串中的内容写到指定流中。这个函数的行为与fprintf类似,只是参数列表是通过 va_list来传递的而不是一连串的参数,这在参数列表在调用函数过程中通过它自身传递时特别有用。vfprintf不会自动调用va_end宏。
  用法 :int vfprintf(FILE *pFile, const char* format, va_list arg),format参数的相关信息请参见fprintf函数。arg是一个代表变量参数列表的对象,它必须已经在头文件cstdarg里定义的 va_start宏里初始化过。成功则返回总共写入的字符数,失败则返回一个负数。

vprintf

  功能 :将已格式化的变量参数列表打印到stdout。向stdout写入参数传递的内容。与vfprintf类似,只是流为标准输出流。
  用法 :int vprintf(const char* format, va_list arg),format的相关内容请参见fprintf函数。成功则返回总共写入的字符数,失败则返回一个负数。

vsprintf

  功能 :将已格式化的变量参数列表打印到字符串。向一个字符串写入参数传递的内容,与vfprintf类似,只是输出对象为一个字符串。
  用法 :int vsprintf(char* str, const char* format, va_list arg),str即为将存储的对象字符串,format的相关内容请参见fprintf函数。成功则返回总共写入的字符数,失败则返回一个负数。


另:

几个宏常量

EOF
  它作为cstdio头文件里一些函数的失败指示返回值,或者当执行读操作时文件尾到达时产生了错误。
#define EOF (-1)

FILENAME_MAX
  文件名的最大长度。这取决于操作系统,如果操作系统对此未作规定,则它将被设置为能装下任何文件名的大小。
#define FILENAME_MAX (260)

TMP_MAX
  临时文件最大个数。
#define TMP_MAX 32767

内置对象

stderr
  FILE* stderr;
  标准错误流。标准错误流是错误信息和其它诊断警告的默认目的地。与stdout一样,它通常也被定位到标准控制台输出设备。stderr可以被用于任 何期望一个输出流作为其中一个参数的函数比如fputs或fprintf等。虽然通常stdout和stderr都被关联到同样的控制台输出,程序为了区 分发送到stdout与stderr的内容会将它们其中之一重定向。例如,常见的如果期望错误显示在控制台屏幕上时会将标准输出重定向到一个文件。在程序 中也可以将stderr通过freopen函数重定向到其它地方。

stdin
    FILE* stdin;
  标准输入流。标准输入流是程序的默认数据来源。它通常被重定向到标准控制台的输入设备(通常是键盘)。stdin可以被用于任何期望一个输入流作为其 一个参数的函数,比如fgets或fscanf等。虽然通常认为stdin的数据来源是键盘是安全的,但是记住即使是在纯控制台系统中也可能不是这样的, 因为stdin能被重定向到操作系统级。例如,许多系统,包括DOS/Windows和大多数的UNIX外壳支持如下的命令语 法:myapplication < example.txt 来使用example.txt的内容来作为myapplication的数据来源。当然在程序中也可以使用freopen函数来 重定向stdin到其它来源。

stdout
  FILE* stdout;
  标准输出流。标准输出流是程序的默认纯输出目的地。它通常被重定向到标准控制台输出设备(通常是屏幕)。stdout可以被用于任何期望一个输出流作 为其一个参数的函数,比如fputs或fprintf。虽然通常认为stdout的目的地是屏幕是安全的,但是记住即使是在纯控制台系统中也可能不是这样 的,因为stdout能被重定向到操作系统级别。例如,许多操作系统,包括DOS/Windows和大多数的UNIX外壳支持如下的命令语 法:myapplication > example.txt 来重定向myapplication的输出到example.txt而不是屏幕。当然在程序中也可以使用freopen函数来重 定向stdout到其它地方。

  注:本文所撰写内容参考http://www./reference/clibrary/cstdio/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    来自: WUCANADA > 《c》

    举报/认领

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多
    热门阅读 换一换