【发布时间】:2015-08-18 21:27:37
【问题描述】:
我正在尝试编写一个读取 1 个字节的代码(理想的目标是 n 个字节,但从 1 个字节开始 - 所以对于 n 个字节,如果它更容易请建议)
以下是我尝试一次读取 1 个字节并以十六进制格式输出的代码。但得到的只是一堆 FFFF
FILE *fp;
int stringlength,i;
/* File can be txt or .bin */
fp = fopen("TestFile3.txt", "r");
if (fp == NULL)
{
puts("Error: Input file cannot be read");
return -1;
}
else
{
size_t i, strlength, lengthOfFile,c;
fseek(fp, 0, SEEK_END);
lengthOfFile = ftell(fp);
printf("length of File is ---- %d \n", lengthOfFile);
while (lengthOfFile)
{
c = fgetc(fp);
printf("%c", c);
lengthOfFile--;
}
putchar('\n');
}
fclose(fp);
return 0;
}
【问题讨论】:
-
fseek(fp, 0, SEEK_END);- 你觉得这是在做什么? -
您已搜索到文件末尾,然后继续尝试阅读,这意味着您正在阅读的只是 EOF....
-
已经跳转到文件末尾,你只会在读取更多数据时得到 EOF,不是吗?
-
作为一种风格,当前一个代码块退出时,您不需要
else。 -
c必须是int,size_t是一个非常错误的类型。并阅读格式字符串语法和正确的参数。
标签: c io binaryfiles file-handling fgetc