C中文件IO的奇怪行为

时间:2014-12-11 21:01:57

标签: c file-io

我在C语言中遇到了一些疯狂的问题。我正在用C编写一种编程语言。我目前在Linux上,我的一个朋友在Windows上从GitHub中取出了存储库,用GCC来构建它并运行this test file

基本上,程序将文件拆分为令牌并解析它。这里的问题,我已经缩小到程序的File IO端。基本上当你读到一个文件时,它会在最后添加一些奇怪的标记,这是我朋友寄给我的调试样本。

Unrecognized identifier found: `VER`
int,
x, =, 5, ;, int, y, =, 10, ;, fn, func_name, (, double, y, ,, int, x, ,, int, zx
asdfqasd_asd, =, 123, ), :, int,
{, }, fn, something_else, (, ), :, void, {, }, fn, main, (, ), :, void, {, somet
hing_else, (, ), ;, func_name, (, 5, ,,
5, ), ;, }, VER, =, \, \, MURRAY, -, P, <END_OF_FILE>,

最后注意:

, VER, =, \, \, MURRAY, -, P, <END_OF_FILE>,

这个字符串标记为:

VER=\\MURRAY-P

这是一个混乱的版本:

LOGONSERVER=\\MURRAY-PC-2

每当我们使用文件进行调试时,根据文件的位置(本地,绝对路径),将不同的系统变量附加到文件中。我不确定这里的相关内容是什么,对此抱歉,但我只想到链接整个存储库here

任何帮助都会令人惊讶,因为我在使用Linux时感到失控。您需要的任何额外细节,只需询问:)

1 个答案:

答案 0 :(得分:1)

即使ftell应该是正确的,因为您以"r"模式而不是"rb"开放,您可以获得翻译,因此fread()返回的fileLength可以为您提供不同的长度(如果Unix行结尾从源文件转换为DOS,则更长),而不是ftell()。如果fopen()"rb"

,您的问题可能会消失