C ++从stdin读取字符适用于Linux但不适用于Windows

时间:2017-06-21 03:04:40

标签: c++ stdin eof getchar

我正在尝试使用github上的这个开源LZW压缩代码。代码正确压缩了我的二进制文件,但在尝试解压缩时,代码调用getchar并从50,000个字符文件中的20个字符内到达EOF

Github存储库:

https://github.com/geoffreylitt/lzw

我查看了解码功能以查看错误。最终我将代码缩减到只有这个:

void decode()
{
    int c = 0;
    while ( (c = getchar()) != EOF) {
        fprintf(stderr, "%i\n", c);
    }
}

这是makefile:

CC=gcc
CFLAGS=-O3 -g3 --std=c99 -Wall

all: encode decode

encode: main.c hasharray.c encode.c decode.c bitio.c stack.c globals.c
    $(CC) $(CFLAGS) -o ../bin/encode $^

decode: encode
    ln -f ../bin/encode ../bin/decode   

这就是我执行脚本的方式:

./decode <encoded.bin> decoded.bin

我认为这与stdin如何处理文件输入有关。但我对它如何处理来自<encoded.bin>的输入流没有太多了解。

在接近全新安装的Ubuntu 16.04上,它与相同的代码,相同的文件和相同的命令完美配合。我真的想知道他们为什么或如何处理这种情况,如果我的代码有同样的问题,我可能会意识到为什么会在以后的路上。

Thanks!

0 个答案:

没有答案