我只想知道如何在不使用scanf/printf/cin/cout的情况下读取整数(来自stdin)和写入整数(在stdout上),因为它们太慢了.谁能告诉我fread和fwrite如何用于此目的?我只知道一点关于缓冲等等.我想替换以下两个代码 - >
[1]
long i , a[1000000];
for(i=0;i<=999999;i++)
scanf("%ld",&a[i]);
Run Code Online (Sandbox Code Playgroud)
和
[2]
for(i=0;i<=999999;i++)
printf("%ld\n",a[i]);
Run Code Online (Sandbox Code Playgroud)
任何其他有效的方法表示赞赏.提前致谢!!
我建议你在错误的地方寻找提速.我们来看看printf():
printf()受到物理上(电子地)将字符放在终端上所花费的大量时间的限制.你可以通过使用sprintf()首先将输出字符写入数组来加快速度.然后使用printf()将数组发送到tty.无论如何,printf()缓冲行,但使用大型多行输出数组可以克服每行发生的设置延迟.
printf()格式化是其开销的一小部分.你可以肯定那些编写这个库函数的人尽力做到尽可能快.而且,在四十年,使的printf()已经出现,许多人都在努力,并改写它几无数次,加快速度.无论你如何努力去做printf()处理的格式化,你都不可能在他们的努力上做出很大的改进.
scanf()延迟和开销是类似的.
你的是一种高尚的努力,我不相信它能够得到回报.