Segmentation fault - operacje na char*
Ostatnio zmodyfikowano 2012-11-11 21:44
RazzorFlame Temat założony przez niniejszego użytkownika |
Segmentation fault - operacje na char* » 2012-11-11 21:33:22 Otóż dużo razy PODOBNIE (ale nie tak samo!) robilem ale teraz juz chyba ze 3 godziny mecze sie nad tym. Chcialem sobie po prostu zrobić editboxa w SFML (tak wgle to robie całe GUI do gry) i teraz zajmuje sie czcionką. Wyskakuje mi w debuggerze Segmentation Fault a sam program sie zawiesza i wylacza. Czytałem że to oznacza że przekroczyłem rozmiar jakiejś tam zaalokowanej pamieci czy coś w tym stylu. Tutaj jest kod funkcji którą chce wyświetlać ciąg znaków (może przy okazji coś innego bede mógl poprawic): void FontDraw( BitmapFont & usedFont, char * data, int posX, int posY ) { int wPosX = posX; int wPosY = posY; bool isSpace1 = false; usedFont.font_sprite.SetSubRect( sf::IntRect( usedFont.Letters[ 0 ].bR.x, usedFont.Letters[ 0 ].bR.y, usedFont.Letters[ 0 ].bR.x + usedFont.Letters[ 0 ].bR.w, usedFont.Letters[ 0 ].bR.x + usedFont.Letters[ 0 ].bR.h ) ); for( int i1 = 0; data[ i1 + 1 ] != '/0'; i1++ ) { for( int i = 'a'; i < 'z'; i++ ) { if( data[ i1 ] == i ) { if( i != 32 ) usedFont.font_sprite.SetSubRect( sf::IntRect( usedFont.Letters[ i - 97 ].bR.x, usedFont.Letters[ i - 97 ].bR.y, usedFont.Letters[ i - 97 ].bR.x + usedFont.Letters[ i - 97 ].bR.w, usedFont.Letters[ i - 97 ].bR.x + usedFont.Letters[ i - 97 ].bR.h ) ); if( i == 32 ) isSpace1 = true; break; } } usedFont.font_sprite.SetPosition( wPosX, wPosY ); if( isSpace1 != true ) app.Draw( usedFont.font_sprite ); wPosX += usedFont.Letters[ 0 ].bR.x + 2; isSpace1 = false; } }
Troche jest już pozmieniany kod bo dlugo sie z tym bawilem. Edit: I tak jak widac w kodzie interesuja mnie tylko 26 liter alfabetu angielskiego. PS.: Od zmiennej 'i' odejmuje 97 bo znak 'a' w ASCII jest właśnie pod tym numerem. |
|
DejaVu |
» 2012-11-11 21:37:08 for( int i1 = 0; data[ i1 + 1 ] != '/0'; i1++ )
zamień na: for( int i1 = 0; data[ i1 ] != 0; i1++ )
Jeżeli innych błędów nie ma w kodzie to ten problem powinieneś zażegnać. |
|
cyklopek11 |
» 2012-11-11 21:44:21 zmienna char o wartości null to: a nie : Jakbyś włączył wszystkie warningi w opcjach swojego środowiska, to by to kompilator wyłapał i Cię o tym poinformował. warning: multi-character character constant warning: overflow in implicit constant conversion
|
|
« 1 » |