Вы пытаетесь определить функцию внутри тела другой функции, что недопустимо, как предполагает ошибка компилятора.
Более того, вы не можете отправить std::ofstream
вызов функции (fo<<passn1();
), это не имеет смысла, так как тип возвращаемого значения функции void
(ничего не возвращает).
Поскольку у вас есть рекурсивная функция (print()
), проще всего было бы взять Выведите поток в файл (std::ofstream
) в качестве параметра вашей функции и напишите pre
непосредственно в него. Конечно, вам нужно будет нести этот параметр ofstream по цепочке функций.
Собрав все воедино, вы получите что-то вроде этого:
#include <iostream>
#include <fstream>
using namespace std;
void print(char set[], string pre, int n, int k, ofstream& fo)
{
if(k==0)
{
fo << pre << endl;
return;
}
for(int i=0;i<n;i++)
{
string newp;
newp=pre+set[i];
print(set, newp, n, k-1, fo);
}
}
void printk(char set[],int k,int n, ofstream& fo)
{
print(set, "", n, k, fo);
}
void ptk(ofstream& fo)
{
char set1[]={'0','1','2','3','4','5','6','7','8','9'};
int k=6;
printk(set1, k, 10, fo);
}
int main()
{
ofstream fo;
fo.open("Password.txt",ios::out);
ptk(fo);
fo<<endl; // this will append an empty line at the end of the file
fo.close();
return 0;
}
Вывод (содержимое Password.txt) :
000000
000001
// rest of the data here...
999998
999999