2015-09-26 45 views
-5

我在论坛上发现了这个代码,它工作正常,但我不知道它是如何工作的,为什么它工作。有人能告诉我关于此代码的几句话吗?我想了解它并知道如何使用它。或者如果你知道更好的方法,如何将数据输入到bin。来自txt文件的文件,你能给我一些建议吗?C程序如何从txt文件加载数据?

#include <stdio.h> 
#define BLOCK_SIZE 256 

int main(void) 
{ 
    char buf[BLOCK_SIZE]; 
    size_t bytes; 

while(!feof(stdin)) { 
    bytes = fread(buf, 1, BLOCK_SIZE, stdin); 
    fwrite(buf, 1, bytes, stdout); 
} 
return 0; 
} 

非常感谢。

+1

你有没有至少阅读http://www.cplusplus.com/reference/cstdio/fread/和http://www.cplusplus.com/reference/cstdio/fwrite/? –

+3

有人写了这个?告诉他们while(!feof(stdin))'是错误的http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong –

+0

为什么C++标记是C语言题? –

回答

0

意图您的程序是从标准输入复制到256个字符的块的标准输出。

fread函数将最多256个{BLOCK_SIZE}个字符读入内存缓冲区。该函数返回读取的实际数量。

fwrite函数会将缓冲区的内容写入标准输出。

通过放入一个循环重复该操作。

+0

但循环如何停止?当feof(stdin)= 0?如果是这样,0取自哪里?那是NULL字符还是类似的东西?这不是我无法找到或理解的。 – Tehryn

+0

@Tehryn你看过'feof'的文档吗?当它遇到“文件结尾”(EOF)时返回'1',在这种情况下,它是标准输入流('stdin')的结尾。当流不在结尾时它返回'0',所以'!feof(stdin)'在流结束时结束“循环”。这是所有非常基本的C东西,我建议你阅读它。 –

+1

@Tehryn:这就是为什么建议阅读标准功能。 'feof'是一个函数,[返回记录](http://en.cppreference.com/w/c/io/feof)。 – usr2564301