详细讲解C++中的 cstdio
cstdio
是 C++ 标准库中的一个头文件,提供了一些与标准 I/O 操作相关的函数和类型。它是 C 语言头文件 stdio.h
的 C++ 版本,因此包含了 C 语言标准库的所有函数。以下是 cstdio
中常用的函数和类型:
文件操作
fopen 和 fclose
fopen
函数用于打开一个文件,并返回一个指向该文件的指针。该函数的原型如下:
FILE* fopen(const char* filename, const char* mode);
其中,filename
表示文件名,mode
表示文件打开模式,例如 "r"
表示读取模式,"w"
表示写入模式,"a"
表示追加模式。如果文件打开成功,该函数返回一个指向文件的指针,否则返回 NULL
。
fclose
函数用于关闭一个文件,它的原型如下:
int fclose(FILE* stream);
其中,stream
表示文件指针,如果文件关闭成功,返回 0
,否则返回一个非零值。
fread 和 fwrite
fread
函数用于从一个文件中读取数据,它的原型如下:
size_t fread(void* ptr, size_t size, size_t count, FILE* stream);
其中,ptr
表示读取数据的缓冲区地址,size
表示每个数据项的大小,count
表示数据项的数量,stream
表示文件指针。如果读取成功,该函数返回实际读取的数据项数量,否则返回一个小于 count
的值。
fwrite
函数用于向一个文件中写入数据,它的原型如下:
size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream);
其中,ptr
表示写入数据的缓冲区地址,size
表示每个数据项的大小,count
表示数据项的数量,stream
表示文件指针。如果写入成功,该函数返回实际写入的数据项数量,否则返回一个小于 count
的值。
fprintf 和 fscanf
fprintf
函数用于向一个文件中输出格式化的数据,它的原型如下:
int fprintf(FILE* stream, const char* format, ...);
其中,stream
表示文件指针,format
表示输出格式,与 printf
函数的格式相同。如果输出成功,该函数返回输出的字符数,否则返回一个负数。
fscanf
函数用于从一个文件中读取格式化的数据,它的原型如下:
int fscanf(FILE* stream, const char* format, ...);
其中,stream
表示文件指针,format
表示输入格式,与 scanf
函数的格式相同。如果读取成功,该函数返回输入的数据项数量,否则返回一个负数。
标准输入输出
scanf 和 printf
scanf
函数用于从标准输入中读取格式化的数据,它的原型如下:
int scanf(const char* format, ...);
其中,format
表示输入格式,与 fscanf
函数的格式相同。如果读取成功,该函数返回输入的数据项数量,否则返回一个负数。
printf
函数用于向标准输出中输出格式化的数据,它的原型如下:
int printf(const char* format, ...);
其中,format
表示输出格式,与 fprintf
函数的格式相同。如果输出成功,该函数返回输出的字符数,否则返回一个负数。
getchar 和 putchar
getchar
函数用于从标准输入中读取一个字符,它的原型如下:
int getchar();
如果读取成功,该函数返回读取到的字符,否则返回 EOF
。
putchar
函数用于向标准输出中输出一个字符,它的原型如下:
int putchar(int c);
其中,c
表示要输出的字符,如果输出成功,该函数返回输出的字符,否则返回一个负数。
其他函数和类型
FILE 类型
FILE
类型是一个结构体类型,表示一个文件流。它的定义如下:
typedef struct _iobuf { char* _ptr; int _cnt; char* _base; int _flag; int _file; int _charbuf; int _bufsiz; char* _tmpfname; } FILE;
fseek 和 ftell
fseek
函数用于设置文件流的位置,它的原型如下:
int fseek(FILE* stream, long int offset, int origin);
其中,stream
表示文件指针,offset
表示相对于 origin
的偏移量,origin
表示起始位置。如果设置成功,该函数返回 0
,否则返回一个非零值。
ftell
函数用于获取文件流的当前位置,它的原型如下:
long int ftell(FILE* stream);
如果获取成功,该函数返回当前位置的偏移量,否则返回一个负数。
perror
perror
函数用于输出最近一次系统调用的错误信息,它的原型如下:
void perror(const char* str);
其中,str
表示自定义错误信息的前缀。该函数会输出 str
和最近一次系统调用的错误信息,以及一个换行符。
以上是 cstdio
中常用的一些函数和类型。在实际编程中,我们经常需要用到这些函数和类型来进行文件读写、输入输出等操作。