【发布时间】:2009-08-26 17:48:12
【问题描述】:
输出:
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);
}
}
“文件”这个词实际上在我的 printf 中被缩短了。有时它显示所有文件名,有时它显示几个,有时它甚至没有完成 printf 引用的行,如上所示。是什么导致了这种情况,我是否被 printf 功能误导了?在调试器中看起来一切正常,但我想确定并理解这一点。例如,我在文件中没有空字符,对吗?为什么这里会被截断?谢谢。
编辑: 不正确 - 单线程应用程序库。 (之前是多线程的,不好意思)
打印到文件会给出完整的文件列表,而 printf 同时是“不稳定的”。不知道我明白为什么....
【问题讨论】:
-
你的程序是否运行多个线程?
-
@Luke:是的,需要修改吗? @fbrereton:不知道是怎么出来的,但它在我的代码中。
-
调试模式下的单线程...比较困惑。
-
为什么要在输出中嵌入 HTML 标签?如果这是通过浏览器进行的,我会查看浏览器和/或连接问题。
-
您正在使用 printf 和 %s... 它不是将 FindFileData.cFileName 视为非 unicode 字符串吗?我希望只在输出中写入第一个字符... :) 因为我只是尝试运行它:)
标签: c++ c visual-studio winapi