无法从文件中打印字符

时间:2015-11-19 01:24:56

标签: c file

我正在尝试从文件中读取文章,但由于某些原因,它有时会起作用,有时我会得到最奇怪的结果。

代码:

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
    FILE *f = fopen("mac_input_off.txt","r");
    char c[2] = "";
    while ( 0 != fread(c,sizeof(char),1,f) )
    {
        c[1] = '\0';
        printf("%s",c);
    }
    fclose(f);
}

在windows中,visual studio 2013工作正常,但在ubuntu linux中,在vmware上,由于某种原因它拒绝读取文本并只读取文本末尾的回车符(用mac os换行编码)

这是文件中的文字:bbb58bc7a385cf89ee2102d5ea8d7cab。 可能的原因是本文中每个字节的第8位设置为0。

知道我没有得到什么?

编辑:终止while循环的有趣的分号被删除了,但没有任何东西被修复......回到绘图板。

尝试通过在gdb中的第10行之后放置一个断点来检查它是否真正读取了东西(我对gdb的实际知识很少,而且我似乎无法获得任何前端工作)并且它确实读了字符。它只是不想打印它们。

1 个答案:

答案 0 :(得分:2)

请注意:

while ( 0 != fread(c,sizeof(char),1,f) );

没有循环体,因为语句以分号结束。

删除;,以下{ ... }中包含的语句将作为循环体执行。然后,您应该看到显示文件的内容。