在另一台计算机MFC C++上不进入while循环
Not going into while loop on another computer - MFC C++
我制作了一个程序,其功能是读取一个每毫秒24/7更新的.log文件。
我不会详细介绍这个程序是如何工作的,因为这将是一篇很长的文章,所以这里有一个总结:-
我的程序的作用:-
1) 有一个配置文件,用户可以更改变量,如time_interval和
2) 用户输入5分钟(或他们希望的频率)并运行我的程序,然后我的程序将在5分钟结束时扫描所述文本文件,然后在5分钟后再次扫描。
3) 它检查文本文件中的某些标志,并在更改值时进行记录
4) 然后将其打印到.csv文件中
最后,这是我要求的一个程序,用于简化机器的数据库跟踪,该机器将其组件上的数据记录在文本文件中(通过/失败)
问题
这个程序在我制作的电脑(Windows7)上运行得很完美,我在另一台运行Windows2000的电脑上进行了测试。
当我把这个程序传递给在Windows XP上运行它的客户端时,它似乎不会进入我设置的while循环。
我的代码
void CSerco_Parser_ToolDlg::Read_Log()
{
int result;
char ReadLogLine[100000] = "";
CString LogPathName;
FILE *readLOG_fp;
LogPathName = Source_Folder + "\Test.log";
readLOG_fp = fopen(LogPathName, "a+t");
MessageBox("Before While Loop");
while ((result = fscanf(readLOG_fp, "%[^n]n", ReadLogLine)) != EOF) // Loops through the fil till it reaches the end of file
{
CurrLine = ReadLogLine;
if ((first_run) && (first_run_check))
{
MessageBox("first run true, first run check true");
CurrLine_Final = CurrLine;
Sort_Array(); // I have MessageBoxes in this to tell me that I have went into this function
Comp_State(); // I have MessageBoxes in this to tell me that I have went into this function
}
else
{
MessageBox("not hitting anything");
}
}
fclose(readLOG_fp);
GenerateCSV(); // I have MessageBoxes in this aswell
}
排序阵列功能
在这篇文章中,我基本上将从.log文件中读取的当前行排序为它自己的数组
Comp State函数
在这篇文章中,我将存储在Sort array中的数组中的值进行比较,如果不同,我将差异存储到另一个数组中以打印
生成CSV函数
顾名思义,这是将差异打印到.csv文件中。
最终问题
当我在电脑上正常运行它时,它会完美地将所有差异打印到.csv文件中,并显示我正确设置的所有消息框。
但是当客户端在他的计算机上运行它时,它无法进入这个while循环
while ((result = fscanf(readLOG_fp, "%[^n]n", ReadLogLine)) != EOF)
并打印出
MessageBox("Before While loop");
并随后跳转到此功能
GenerateCSV();
由于它没有经过while循环,所以没有任何存储到要打印的数组中的内容。因此,导致程序什么都不做。
问题
它为什么要这么做?
它不应该是特定于操作系统的,因为与XP相比,我在一个旧的操作系统上测试了它。
这不是我确定的文件是空的。(双重检查,三次检查…)
它不是.log文件的路径名。(再次进行双重、三重检查等)
这不是由于特权(询问我的客户)
我唯一能想到的是,由于某种原因,它会进入.log文件并直接跳到EOF。但是,当我在自己的电脑上测试它时,为什么它能完美地工作呢。
如果它没有进入while
循环,而它必须进入,因为对fscanf
的调用正在返回EOF
。
你检查过电话吗:
readLOG_fp = fopen(LogPathName, "a+t");
实际返回的是有效的文件指针吗?如果是,请首先检查文件是否为空。
您可能还需要检查权限。日志文件可能存在,但您的程序可能没有打开它的权限。
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 在基于范围的for循环中使用结构化绑定声明
- 用于C++中带有数组和指针的循环
- 循环中的随机函数
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 在循环C++中指定字符串之后,不会打印该字符串