我在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时感到失控。您需要的任何额外细节,只需询问:)
答案 0 :(得分:1)
即使ftell
应该是正确的,因为您以"r"
模式而不是"rb"
开放,您可以获得翻译,因此fread()
返回的fileLength可以为您提供不同的长度(如果Unix行结尾从源文件转换为DOS,则更长),而不是ftell()
。如果fopen()
与"rb"