Zdaje się, że czegoś w C++ nie rozumiem. Poniższy kod wyświetla mi ostatni wpis w char* displayModes[numDisplayModes];
powielony o ilość wpisów w tej tablicy. Działanie miało być inne - miały wyświetlać się wszystkie wpisy po kolei, po jednym.
#include <stdio.h>
#include <allegro5/allegro.h>
#include <string>
#include <iostream>
const int NO_ERROR = 0;
const int ERROR = -1;
int main(int argc, char **argv){
ALLEGRO_DISPLAY *display = NULL;
ALLEGRO_EVENT_QUEUE *evqueue = NULL;
ALLEGRO_TIMER *timer = NULL;
ALLEGRO_BITMAP *bitmap = NULL;
if (al_init() == NULL) {
return ERROR;
}
int numDisplayModes = al_get_num_display_modes();
char* displayModes[numDisplayModes];
ALLEGRO_DISPLAY_MODE dispMode;
for (int i = 0; i < numDisplayModes - 1; i ++) {
al_get_display_mode(i, &dispMode);
char dispStr[13];
int n = sprintf(dispStr, "%dx%dx%d", dispMode.width, dispMode.height, dispMode.refresh_rate);
displayModes[i] = dispStr;
}
for (int i = 0; i < numDisplayModes - 1; i ++) {
std::cout << displayModes[i] << "\n";
}
return NO_ERROR;
}
Co jest tutaj nie tak?