感谢大家到目前为止您的意见和建议!
另外:
在进一步测试和玩弄后,似乎对FileReader的单独调用成功.但是多次调用FileReader(这些可能是FileReader的单独版本)会导致问题发生.
结束添加
你好,
我有一个非常不寻常的问题[请完整阅读:这很重要](Code :: Blocks编译器,Windows Vista Home)[没有可复制的代码]和C文件读取功能(fread,fgetc).现在,通常,文件读取功能正确地将数据加载到自分配和自解除分配的字符串(并且它不是字符串的问题),但这是奇怪的(以及量子物理学适合的地方):
错误捕获语句报告EOF发生得太早(IE正在加载的文本文件开头的注释部分内).打印出字符串[加载后]确实报告确实太短(24个字符)(但它有足够的空间来容纳它[~400]并且没有分配问题).fgetc循环迭代器报告它终止于24(文件大约300个字符长)和一个EOF:这是它变得如此糟糕:
暂时检查Read - > _ base报告整个(~300)字符被加载 - 24处没有EOF.困惑,[给它是一个fgetc循环]我添加了一个printf来显示每个char [作为%d所以我可以发现 - 1 EOF]每一步都可以看到它在做什么,并对其进行了修改,因此它只是一个字符.它循环很好,达到~300而不是24 - 但稍后随机冻结.但是,当我删除printf时,它再次终止于24并被错误捕获语句捕获.
总结:所以,基本上:我有一个受量子物理学中"观察者效应"影响的错误:当我试图观察我从fgetc通过printf得到的字符时,问题(早期EOF终止于24)消失了,但是当我停止查看它时,错误捕获语句报告提前终止.
更奇怪的是,这不是第一次发生.Fread有类似的问题,我无法弄清楚原因,并用fgetc循环替换它.
[代码无法真正提供,因为代码库的大小为5个标题].
片段:
int X = 0;
int C = 0;
int I = 0;
while(Copy.Array[X] != EOF)
{
//Copy.Array[X] = fgetc(Read);
C = fgetc(Read);
Copy.Array[X] = C;
printf("%d %c\n",C,C); //Remove/add this as necessary
if(C == EOF){break;}
X++;
}
Run Code Online (Sandbox Code Playgroud)
侧注:将其分解为最简单的格式不会重现错误.
c ×1