我正在尝试编写一个读取文件并从中打印字符的代码。如果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;
}
我是否应为此保留一些空间或使其正常工作或代码错误。
答案 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;
}