输出:
The first file found is LOG_09.TXT
Next file name is LOG_10.TXT
Next file name is LOG_11.TXT
Next fi (cut off word "file"?)
功能:
//Find last modified log file
hFind = FindFirstFile("..\\..\\LOGS\\LOG*.TXT", &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("FindFirstFile failed (%d)\n", GetLastError());
return;
}
else
{
printf("The first file found is %s<br>",FindFileData.cFileName);
//List all the other files in the directory.
while (FindNextFile(hFind, &FindFileData) != 0)
{
printf ("Next file name is %s<br>", FindFileData.cFileName); //NOT DISPLAYING ALL NAMES CONSISTENTLY??
}
dwError = GetLastError();
FindClose(hFind);
if (dwError != ERROR_NO_MORE_FILES)
{
printf ("FindNextFile error. Error is %u.\n", dwError);
return (-1);
}
}
“print”这个词实际上在我的printf中缩短了。有时它显示所有文件名有时会显示一些,有时它甚至没有完成printf引用行,如上所示。造成这种情况的原因是什么?我被printf功能误导了?在调试器中,它看起来一切正常,但我想确定并理解这一点。例如,我在文件中没有空字符?为什么要在这里切断?谢谢。
编辑: 不正确 - 单线程应用程序库。 (以前是多线程的,对不起)
打印到文件时会提供完整的文件列表,而printf会同时“不稳定”。我不确定为什么......
答案 0 :(得分:2)
既然你说你的程序是多线程的,我猜这个函数正在执行的线程正在被提前杀死。在调试器下运行时不会发生这种情况。您需要一些线程同步以确保允许此线程完成。
答案 1 :(得分:1)
由于您的应用程序是多线程的,因此printf可能会被另一个线程中途缩短,然后由另一个线程获得控制权,请尝试:
(不确定是否需要第2步)。