C从文件中读取

时间:2016-04-12 10:07:22

标签: c file printing

我正在尝试编写一个读取文件并从中打印字符的代码。如果char不可读,则应打印?。如果文件中存在错误,则代码返回-1否则返回读取的字符数。不知怎的,这不能正常工作,因为我无法编译它。

int printfile(const char *filename)
{
    FILE *f = fopen(filename, "r");
    int  i, c;
    char k = "?";

    while ((i = fgetc(f)) != EOF ) {
        c++;
        if(isprint(i)){
            printf("%c ", i);
        }
        else if (ferror(f)) return -1;
        else {
            printf("%c", k);
        }
    }
    return c;
}

我是否应为此保留一些空间或使其正常工作或代码错误。

1 个答案:

答案 0 :(得分:0)

以下是我将如何实施PrintFile的示例,希望它有所帮助。

#include <stdio.h>

int PrintFile(const char *filename);

int PrintFile(const char *filename)
{
    FILE *file = fopen(filename, "r");

    if (file == NULL)
    {
        return -1;
    }

    int c = 0;
    int i = 0;

    while ((c = fgetc(file)) != EOF)
    {
        if (isprint(c))
        {
            fputc(c, stdout);
            i++;
        }
        else
        {
            fputc('?', stdout);
        }
    }

    if (ferror(file))
    {
        return -2;
    }

    return i;
}