我创建了一个Handle hfile。我使用FindFirstFile,并检查hFile!=INVALID_HANDLE_VALUE。在终端上使用MinGW编译时,编译器无法打开文件夹,我输入路径。
这是代码的那一部分:
WIN32_FIND_DATA winFileData;
HANDLE hFile;
DWORD dwRet;
char directoryPath[50];
char directoryPath1[50];
char directoryPath2[50];
string txtName;
char chTxtName[15];
string text;
cout<<"Path :";
cin.getline(directoryPath,MAX);
for(int i=0;i<=sizeof(directoryPath);i++)
{
directoryPath1[i]=directoryPath[i];
}
lstrcat(directoryPath,"\\*.txt*");
hFile = FindFirstFile(directoryPath,&winFileData);
if (hFile!=INVALID_HANDLE_VALUE)
{
//сюда при компиляции на терминале с MinGW не заходит
//но при запуске на CodeBlocks все идеально работает
do
{
for(int i=0;i<sizeof(directoryPath1);i++)
{
directoryPath2[i]=directoryPath1[i];
}
txtName=winFileData.cFileName;
lstrcat(directoryPath2,"\\");
for(int i=0;i<15;i++)
{
chTxtName[i]=txtName[i];
}
lstrcat(directoryPath2,chTxtName);
ifstream file(directoryPath2);
getline(file,text);
txtFolders->Ekle(txtName,text);
file.close();
}
while (FindNextFile(hFile,&winFileData)!=0);
FindClose(hFile);
}
}
在 CodeBlocks 上运行时,一切正常
这是makefile:
all:derle calistir
derle:
g++ -I ./include -o ./lib/Islem.o -c ./src/Islem.cpp
g++ -I ./include -o ./lib/BagilListe.o -c ./src/BagilListe.cpp
g++ -I ./include -o ./lib/Dugum.o -c ./src/Dugum.cpp
g++ -I ./include -o ./lib/Agac.o -c ./src/Agac.cpp
g++ -I ./include -o ./bin/odev ./lib/Agac.o ./lib/Dugum.o ./lib/BagilListe.o ./lib/Islem.o ./src/main.cpp
calistir:
./bin/odev
如果您没有提供足够的信息,请告诉我要详细解释的内容和部分,或者如果您无法准确解释问题所在。
预先感谢您的帮助!
我
(for(int i=0;i<=sizeof(directoryPath);i++))用一个strcpy(directoryPath1,directoryPath);有效的循环替换了那个循环。