lenrokskate Temat założony przez niniejszego użytkownika |
Problem z plikiem ini (lub) funkcją sprintf » 2010-06-03 18:28:29 Korzystam z IDE Code::Blocks kompilator GNU GCC. Chcę napisać program w stylu milionerów. Ma on losować numer pytania a potem zamieniać go na char i odczytać pytanie z pliku INI. Kod wygląda tak: #include <iostream> #include <windows.h> #include <ctime> #include <conio.h>
using namespace std;
char cd[ MAX_PATH ]; char wartosc[ 4 ][ 256 ];
char * convITOA( int liczba, char * reserved );
int main() { GetCurrentDirectory( sizeof( cd ), cd ); strcat( cd, "\\pytania.dat" ); GetPrivateProfileString( convITOA( 1, 0 ), "a", "Odczytywana_wartość_nie_istnieje!", wartosc[ 0 ], 256, cd ); GetPrivateProfileString( convITOA( 1, 0 ), "b", "Odczytywana_wartość_nie_istnieje!", wartosc[ 1 ], 256, cd ); GetPrivateProfileString( convITOA( 1, 0 ), "c", "Odczytywana_wartość_nie_istnieje!", wartosc[ 2 ], 256, cd ); GetPrivateProfileString( convITOA( 1, 0 ), "d", "Odczytywana_wartość_nie_istnieje!", wartosc[ 3 ], 256, cd ); for( int i = 0; i < 4; i++ ) cout << wartosc[ i ] << endl; getch(); return 0; }
char * convITOA( int liczba, char * reserved = NULL ) { if( reserved != NULL ) reserved = NULL; sprintf( reserved, "%c", liczba ); return reserved; }
A plik pytania.dat wygląda tak: [ 1 ] a = "odp a" b = "odp b" c = "odp c" d = "odp d" x = b [ 2 ] a = "odp2 a" b = "odp2 b" c = "odp2 c" d = "odp2 d" x = b
A program powinien wyświetlić odp a, odp b... Kiedy uruchomię go przez C::B przez CTRL+F10 wyświetla litery 'l' a kiedy normalnie 2xLPM z folderu bin/debug to wyświetla jedynki Dlaczego to nie chce działać? Czemu to nie działa? |
|
szyx_yankez |
» 2010-06-03 19:23:21 Odpowiem krótko jak Pan Piotr: bo tak zaprogramowałeś. |
|
Elaine |
» 2010-06-03 19:35:43 Jeśli podasz nullowy wskaźnik jako pierwszy argument GetPrivateProfileString, to odczyta nazwy istniejących sekcji...
Swoją drogą, co ma robić convITOA()...? |
|
lenrokskate Temat założony przez niniejszego użytkownika |
» 2010-06-03 19:40:50 konwersja int to char... |
|
lenrokskate Temat założony przez niniejszego użytkownika |
» 2010-06-03 19:46:24 sorry, teraz proszę już o gotowca... niech mi to ktoś napisze bo próbowałem już tysiące sposobów i żaden nie działa |
|
DejaVu |
» 2010-06-04 01:10:29 Olej na początek interfejs i skup się tylko i wyłącznie na funkcjach do odczytywania danych z pliku (dotyczy to rónież zapisywania danych). Mając poprawne funkcje do zarządzania danymi będziesz mógł łatwo zakodzić interfejs, a w konsekwencji ukończyć projekt. /edit: Przeczytałem sobie kod ;p MSDN prawdę Ci powie: http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspx/edit2: #include <cstdio> #include <windows.h>
int main() { char wynik[ 256 ]; GetPrivateProfileString( "2", "c", "<<zonk>>", wynik, sizeof( wynik ), "C:/xxx.ini" ); printf( "%s\n", wynik ); return 0; } Wynik: odp2 c
Kowersja int => char* i na odwrót była poruszona na forum kiedyś. Ponadto niniejszy temat nie nawiązuje do konwersji danych, więc nie dostaniesz tu odpowiedzi na to pytanie. /edit3: char * convITOA( int liczba, char * reserved ); A jak już piszesz jakąś funkcję, która coś ma robić to polecam ją najpierw testować na boku czy działa, jeżeli nie wiesz czy kod działa dobrze czy nie i nie potrafisz używać debuggera. Dużo szybciej rozwiążesz swoje problemy aniżeli przychodząc na forum z byle pierdołą (no i więcej się nauczysz). |
|
« 1 » |