题解 UVA1124 【Celebrity jeopardy】
这是一道练习 fread 和 fwrite 的好题。
那么我们先来认识一下 fread 和 fwrite:
fread
fread 定义于 cstdio 头文件中,它的函数原型为:
size_t fread( void *restrict buffer, size_t size, size_t count, FILE *restrict stream );
它将从输入流
那么我们来解释一下这些参数的意思:
fread 返回它成功读入的字符数
fwrite
fwrite 定义于 cstdio 头文件中,它的函数原型为:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
它将往输出流
那么我们来解释一下这些参数的意思:
fwrite 返回
这些函数认识完了,那么,我们可以先用 fread 读入所有字符,再用 fwrite 输出所有字符。
fwrite 具体要输出多少个字符呢?我们可以记录一下 fread 的返回值,fwrite 就输出 这个返回值 个字符就行了。
代码实现:
#include <cstdio>
using namespace std;
char buf[1<<22];
int main(){
fwrite(
buf, //对应 ptr
1, //对应 size
fread(
buf, //对应 buffer
1, //对应 size
1<<22, //对应 count
stdin //对应 stream
), //对应 nmemb
stdout //对应 stream
);
return 0;
}