【发布时间】:2010-11-05 02:09:25
【问题描述】:
我将文件作为输入参数,我需要确定数据是否为二进制(我猜是 ASCII 或二进制),类似于 *nix 上的“文件”命令,但在我的应用程序中.
我不知道该怎么做,因为当我读取数据时,我就是这样做的:
fread(&rndByte, sizeof(unsigned int), 1, fp);
// reading one unsigned int at a time from file fp
我正在考虑多次测试该值是否
有什么想法、建议吗?
【问题讨论】:
-
如果您的文本中有任何特殊字符,您的检查将会失败。此外,逐字节读取非常慢。
-
你为什么一次读
unsigned int?一次阅读char会容易得多。 -
您究竟为什么需要这样做?
-
这是一个家庭作业,我们需要读取一个无符号整数,然后对其进行算术运算以确定程序如何进行。可悲的是,我无法更改正在读取的数据量,因为这是必需的。但是,我想一个 char 可能会工作......但我认为将它保留为 unsigned int 会更容易。
-
您正在寻找满足家庭作业(愚蠢)要求的算术是按位和运算符。假设你的
unsigned int是 32 位,if (x & 0x80808080)将同时测试 4 个字节的高位。
标签: c file-io ascii binary-data file-type