我们如何在C ++中一次性扫描STDIN中的100个字节

时间:2012-12-10 20:00:25

标签: c++ string io inputstream

扫描仪等待,直到我们输入100个字节的数据。因此,如果我们将文件重定向到 可执行文件的输入,如果文件有> 100字节的数据。我一次扫描它,而不是逐行扫描fgets()scanf("%s")等。

1 个答案:

答案 0 :(得分:3)

您可以使用fread来读取所需的字节数,而不受换行符或其他任何内容的影响:

char buf[100];
size_t bytes_read = fread(buf, 1, 100, stdin);

请注意buf不会以空值终止。因此,如果您想要printf,例如(它需要一个以空字符结尾的字符串),您可以尝试以下方法:

char buf[101];
size_t bytes_read = fread(buf, 1, 100, stdin);
buf[100] = '\0'; // The 101th "cell" of buf will be
                 // the one at index `100` since the
                 // first one is at index `0`.