fwrite不会向stdout打印任何东西

pra*_*ead 2 c stdout fwrite

当我运行这个小代码并在控制台上输入3个整数时,由于fwrite语句,它不会打印出来.只有在我继续按下输入一段时间后才打印.救命?PS:学习比scanf和printf更快的方法.

#include<stdio.h>
int main(){
    int size[3];
    fread(&size,sizeof(int),3,stdin);
    fwrite(&size,sizeof(int),3,stdout);
    fflush(stdout);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*nck 5

这是因为fread读取二进制数据而不是格式化文本,因此当您告诉它读取3"整数"时,它将从stdin读取3*4 = 12字节的原始数据.如果键入"1""2""3",那么只有三个字节的文本,再加上三个换行符.一旦你键入了12个字节,它可能会超过那个部分,但是你的程序可能会坏掉,假设你想读写实际的文本.

你的意思是说你"比scanf和printf更快地学习." 嗯,这不是一个更快的方式,它只是一个破碎的方式.如果您在使用scanf&printf的某些代码中遇到性能问题,请提出单独的问题,我们可以提供帮助.