【发布时间】:2012-03-11 23:42:58
【问题描述】:
我在从文件中读取特定整数时遇到问题,我不知道为什么。首先,我通读了整个文件以了解它有多大,然后我将指针重置为开头。然后我读取了 3 个 16 字节的数据块。然后是 1 个 20 字节的块,然后我想在最后读取 1 个字节作为整数。但是,我必须作为字符写入文件,但我认为这不应该是一个问题。我的问题是,当我从文件中读取它而不是 15 的整数值时,它是 49。我检查了 ACII 表,它不是 1 或 5 的十六进制或八进制值。我非常困惑,因为我的阅读声明是read(inF, pad, 1),我认为这是正确的。我确实知道一个整数变量是 4 个字节,但是文件中只剩下一个字节的数据,所以我只读取了最后一个字节。
我的代码是复现了这个功能(貌似很多但没想到是这样)
代码是
#include<math.h>
#include<stdio.h>
#include<string.h>
#include <fcntl.h>
int main(int argc, char** argv)
{
char x;
int y;
int bytes = 0;
int num = 0;
int count = 0;
num = open ("a_file", O_RDONLY);
bytes = read(num, y, 1);
printf("y %d\n", y);
return 0;
}
总结我的问题,为什么当我从文本文件中读取存储 15 的字节时,我不能从整数表示中将其视为 15? 任何帮助将不胜感激。 谢谢!
【问题讨论】:
-
我不太清楚您对数据做了什么,因此您可能应该将代码简化为更简单的代码,例如“从文件中读取数字”和“将数字写入一个文件”——试验起来要容易得多。
-
@che 我把代码改成了类似但非常简单的代码,但我仍然遇到同样的问题,你有什么建议吗?
-
这里有个线索:49是ASCII字符'1'的十进制值。
标签: c file pointers byte ascii