Я пытаюсь прочитать значения из файла ppm-изображения, и я получаю сообщение «Ошибка проверки времени выполнения # 2 - стек вокруг переменной« числа »был поврежден».Я новичок в C ++ и программировании в целом, и я не понимаю, в чем проблема, кто-то может помочь?
Я не знаю, если это важно, но код, который я написал в основном, я позже передам вМетод, который будет выполнять эту задачу (я сделаю все необходимые корректировки), будет ли аналогичная ошибка возникать внутри метода?
(код написан в Visual Studio в режиме отладки)
int main(int argc, char *argv[]) {
ifstream imagefile(argv[1], ios::binary);
if (!imagefile.is_open()) {
printf("error opening");
return 0;
}
string values[4];
int x;
for (int i = 0; i < 4; i++) {
string str;
char c = imagefile.get();
while (!isspace(static_cast<unsigned char>(c))) {
str = str + c;
c = imagefile.get();
if (str.size() > 10000) {
cout << "wrong" << endl; //for testing
goto stop;
}
}
x=i;
cout << x << endl; //for testing
values[i] = str;
cout << str << endl; //for testing
}
stop:
if (!values[0].compare("P6") == 0 || x!=3) {
cout << "wrong format" << endl;
system("pause");
return 0;
}
int numbers[3];
for (int i= 1; i <4; i++) {
stringstream str; //to convert string to integer
str << values[i];
int number;
str >> number;
numbers[i] = number;
cout << numbers[i] +1<< endl; //for testing
}
int start = imagefile.tellg();
imagefile.seekg(0, ios::end);
int end = imagefile.tellg();
int size = end - start;
imagefile.seekg(start, ios::beg);
float *pixels = new float[size];
for (int i = 0; i < size; i++) {
int c = imagefile.get();
float f = c / 255.0;
pixels[i] = f;
}
system("pause");
return 0;
}