Отлично, в конце концов, это было не так сложно, мне пришлось использовать цикл do-while:
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
if((hFind = FindFirstFile("C:/some/folder/*.txt", &FindFileData)) != INVALID_HANDLE_VALUE){
do{
printf("%s\n", FindFileData.cFileName);
}while(FindNextFile(hFind, &FindFileData));
FindClose(hFind);
}
Это действительно лучше, потому что я могу использовать «* .txt» и т. д., делает это гораздо легче найти некоторые конкретные типы файлов, раньше мне приходилось писать собственную функцию соответствия для этого: D
Похоже, что вы хотите пропустить диагонали, потому что они уже были инициализированы (выделенный здесь не правильный термин).
Глядя на ваш цикл, в котором вы устанавливаете диагонали, вы можете видеть, что каждый (i, j), который вы устанавливаете, подчиняется abs(i-j) <= 2
. Например, когда вы устанавливаете элемент (i, i+2) -> abs(i-(i+2)) -> abs(-2) -> 2
, который меньше или равен 2.
Таким образом, условие во втором цикле должно быть:
if (abs(i-j) <= 2)
continue;//break will exit the loop, continue will skip to the next iteration