std::ofstream myfile;
myfile.open ("adsf.txt");
int g [800];
for (int i = 0; i < 800; i++)
{
for (int j = 0; j < 129; j++)
{
if((int)img.getPixel(i,j).a>111){
myfile<<(j+353);
myfile<<"\n";
g[i]=j+353;
break;
}
}
}
myfile.close();
Этот код приводит к текстовому файлу со следующими значениями из строк 364-384:
481
481
481
481
481
481
481
481
481
481
481
481
481
481
481
481
481
481
481
481
481
Эти значения верны.
Однако, если я использую цикл for для проверки массива после его создания, это приводит к повреждению этих (и других, всех из них в середине файла):
for (int h = 0; h < 800; h++)
{
myfile<<g[h];
myfile<<"\n";
}
myfile.close();
результаты в
481
481
481
481
481
481
481
481
481
481
481
2004341180
1994199293
344
0
1994199326
1314101291
14019080
14019376
15809736
36
Это повреждение продолжается до строки 489, когда файл снова становится точным.
Может кто-нибудь сказать мне, что я делаю не так?
Могу поспорить, что в вашем файле окажется менее 800 номеров.
Когда внутренний цикл не находит j
для которого условие выполнено, он а) ничего не выводит в файл и б) оставляет g[i]
неинициализированный, содержащий случайный мусор.