多数与C语言输入输出相关的函数在<stdio.h>中定义(C++中的<cstdio>)。
常用总结,关于文件的各种使用另外单独学习:
1. 文件开关
fopen, fclose
2. 文件读写
fread, fwrite
3. 文件定位
ftell,fseek,rewind
4. 格式化输入输出
printf,fprintf,sprintf
5. 非格式化输入输出
getc/fgetc, putc/fputc,ungetc,fgets,fputs
6. 错误处理
feof, ferror
7. 文件操作
remove,rename,tmpfile
以下部分为转载:
1. 库变量
序号变量描述1size_t这是无符号整数类型,它是 sizeof 关键字的结果。2FILE这是一个适合存储文件流信息的对象类型。3fpos_t这是一个适合存储文件中任何位置的对象类型。
2. 宏定义
下面是头文件 stdio.h 中定义的宏:
序号宏描述1NULL这个宏是一个空指针常量的值2_IOFBF、_IOLBF 和 _IONBF这些宏扩展了带有特定值的整型常量表达式,并适用于 setvbuf 函数的第三个参数。3BUFSIZ这个宏是一个整数,该整数代表了 setbuf 函数使用的缓冲区大小。4EOFEnd-of-File5FOPEN_MAX这个宏是一个整数,该整数代表了系统可以同时打开的文件数量。6FILENAME_MAX这个宏是一个整数,该整数代表了字符数组可以存储的文件名的最大长度。如果实现没有任何限制,则该值应为推荐的最大值。7L_tmpnam这个宏是一个整数,该整数代表了字符数组可以存储的由 tmpnam 函数创建的临时文件名的最大长度。8SEEK_CUR、SEEK_END 和 SEEK_SET这些宏是在These macros are used in the fseek 函数中使用,用于在一个文件中定位不同的位置。9TMP_MAX这个宏是 tmpnam 函数可生成的独特文件名的最大数量。10stderr、stdin 和 stdout这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。
3. 库函数
3.1 Operations on files:
序号函数描述补充描述1int remove ( const char * filename );Deletes the file whose name is specified in filename.(永久删除文件)操作成功,返回0,否则返回非零2int rename ( const char * oldname, const char * newname );Changes the name of the file or directory specified by oldname to newname.同上3FILE * tmpfile ( void );以二进制更新模式(wb+)创建临时文件成功,返回临时文件, failure, NULL is returned.4char * tmpnam ( char * str );生成并返回一个有效的临时文件名,该文件名之前是不存在的。成功,返回文件名,失败,返回NULL
3.2 File access:
序号函数描述补充描述1int fclose ( FILE * stream );关闭流 stream。刷新所有的缓冲区。success,return 0,fail,return EOF2FILE * fopen ( const char * filename, const char * mode );使用给定的模式 mode 打开 filename 所指向的文件success,return FILE*,fail,return NULL3FILE * freopen ( const char * filename, const char * mode, FILE * stream );把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。同上4int fflush ( FILE * stream );刷新流 stream 的输出缓冲区。成功,返回0,失败返回EOF5void setbuf ( FILE * stream, char * buffer );自定义控制流的缓冲 6int setvbuf ( FILE * stream, char * buffer, int mode, size_t size );自定义缓冲流及缓冲模式成功,返回0,失败返回非零
3.3 Formatted input/output:
序号标签函数原语描述补充描述1fprintfint fprintf ( FILE * stream, const char * format, … );格式化输出到指定流成功,返回写入的字符总数,否则返回负数2printfint printf ( const char * format, … );格式化输出到标准输出流stdout成功,返回写入的字符总数,否则返回负数3sprintfint sprintf ( char * str, const char * format, … );格式化输出到字符串缓冲区,并自动在末尾添加字符串结尾标识符’\0’成功,返回写入的字符总数(不包括自动添加的’\0’),否则,返回负数4snprintf(C99)int snprintf ( char * s, size_t n, const char * format, … );格式化输出到字符串缓冲区,并自动在末尾添加字符串结尾标识符’\0’(设置单词最大写入字符个数)成功,返回写入的字符总数(不包括自动添加的’\0’),否则,返回负数5fscanfint fscanf ( FILE * stream, const char * format, … );Read formatted data from stream成功,返回成功填充的变量总数,失败返回EOF6scanfint scanf ( const char * format, … );Read formatted data from stdin同上7sscanfint sscanf ( const char * s, const char * format, …);Read formatted data from string同上
可变参数操作函数:
序号标签描述1vfprintfWrite formatted data from variable argument list to stream2vfscanfRead formatted data from stream into variable argument list3vprintfPrint formatted data from variable argument list to stdout4vscanfRead formatted data into variable argument list5vsnprintfWrite formatted data from variable argument list to sized buffer6vsprintfWrite formatted data from variable argument list to string7vsscanfRead formatted data from string into variable argument list
3.4 Character input/output:
序号标签函数原语描述补充描述1fgetcint fgetc ( FILE * stream );Get character from stream成功,返回字符的ASCII码,否则返回EOF2getcint getc ( FILE * stream );同上getc and fgetc are equivalent, except that getc may be implemented as a macro in some libraries3getcharint getchar ( void );Get character from stdin成功,返回字符的ASCII码,否则返回EOF4fgetschar * fgets ( char * str, int num, FILE * stream );Get string from stream从fp指向的文件中读取下一个输入行(包括换行符),并将它存放在字符数组中,最多可以读取maxline-1个字符,读取的行以’\0’结尾,不安全5getschar * gets ( char * str );Get string from stdin读取字符串,欲换行符’\n’结束,并删除换行符,用fgets代替6fputcint fputc ( int character, FILE * stream );Write character to stream成功,返回写入的字符,失败,返回EOF7putcint putc ( int character, FILE * stream );同上putc and fputc are equivalent, except that putc may be implemented as a macro in some libraries8putcharint putchar ( int character );Write character to stdout同上9fputsint fputs ( const char * str, FILE * stream );Write string to stream成功,返回非负数,失败,返回EOF10putsint puts ( const char * str );Write string to stdout(每行末尾自动添加换行符)同上11ungetcint ungetc ( int character, FILE * stream );使字符c(转化为uchar型)被压入到指定输入流成功,返回压入的字符,失败,返回EOF
3.5 Direct input/output:
序号标签函数原语描述补充描述1freadsize_t fread ( void * ptr, size_t size, size_t count, FILE * stream );Read block of data from stream成功,返回读取的元素总数,失败,返回0(可以用feof或ferror工具判断是出现错误还是到文件末尾)2fwritesize_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );Write block of data to stream返回实际写入元素的个数,正常情况返回值等于count
3.6 File positioning:
序号标签函数原语描述补充描述1fgetposint fgetpos ( FILE * stream, fpos_t * pos );Get current position in stream成功,返回0 ,否则返回非零2fsetposint fsetpos ( FILE * stream, const fpos_t * pos );根据*pos中的位置设置当前文件的位置同上3fseekint fseek ( FILE * stream, long int offset, int origin );重定位文件位置以便随机stream流同上4ftelllong int ftell ( FILE * stream );返回当前流中的位置(同fgetpos)但其返回long int(小型文件),大型文件用fgetpos5rewindvoid rewind ( FILE * stream );把流重置为起始位置相当于 fseek(stream,0L,SEEK_SET)
3.7 Error-handling:
序号标签函数原语描述补充描述1clearerrvoid clearerr ( FILE * stream );Resets both the error and the eof indicators of the stream 2feofint feof ( FILE * stream );检测是否到达文件尾到达结尾,返回非零,否则返回03ferrorint ferror ( FILE * stream );返回流的错误状态若错误标志被设置,返回非零,否则返回04perrorvoid perror ( const char * str );打印错误信息至stderr
参考:http://www.cplusplus.com/reference/cstdio/ 《C标准库》,P.J. Plauger 著 《C语言参考手册》,Samuel P. Harbison III 等著
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有