Массив C ++ int заканчивается плохими данными в середине

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, когда файл снова становится точным.

Может кто-нибудь сказать мне, что я делаю не так?

1

Решение

Могу поспорить, что в вашем файле окажется менее 800 номеров.

Когда внутренний цикл не находит j для которого условие выполнено, он а) ничего не выводит в файл и б) оставляет g[i] неинициализированный, содержащий случайный мусор.

3

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector