【发布时间】:2011-02-21 20:19:31
【问题描述】:
我的系统编程项目让我们实现了一个压缩/解压缩程序,通过删除零顶部位并将输出写入单独的文件来处理 ASCII 文本文件,具体取决于压缩或解压缩例程是否正常工作。为此,教授要求我们使用二进制文件和Unix系统调用,包括open, close, read, write等。
根据我对读写的理解,它通过定义的字节块读取二进制数据。但是,由于这个数据是二进制的,我不知道如何解析它。
这是我的代码的精简版,减去错误检查:
void compress(char readFile[]){
char buffer[BUFFER] //buffer size set to 4096, but tunable to system preference
int openReadFile;
openReadFile= open(readFile, O_RDONLY);
}
如果我使用read将数据读入buffer,缓冲区中的数据是二进制还是字符格式?我没有遇到任何关于这个细节的东西,它与我如何解析内容非常相关。
【问题讨论】:
-
char是一个字节。 “二进制或字符格式”是什么意思? -
他大概是在“混合”
fopen的“文本模式”和“二进制模式”。open,作为一个原始人,没有“文本模式”(如果我没记错的话),所以它总是处于“二进制模式” -
@xanatos: ...这对我使用的任何 *nix 都没有任何影响
-
@matti 我在 fopen 的随机手册上看到:“在许多环境中,例如大多数基于 UNIX 的系统,将文件作为文本文件或二进制文件打开没有区别;两者以完全相同的方式处理,但建议进行区分以获得更好的便携性。”。尽管如此,许多并不是全部,他的问题是一个明智的问题(如果这是一个问题)
-
C 中的
byte没有单独的类型。将您读取的每个字符视为一个字节。
标签: c unix system-calls