[ROZWIĄZANE] Tablica wynikowa jako jeden z...
Najlepsza odpowiedź DarkGL 21.11.2013 17:28
Dlatego że w drugim przypadku nie zostanie znalezione nigdy \0 ( koniec ciągu ) kopiowanie będzie czytać z początku stringa i dopisywać w pewnym miejscu w pamięci ( jako że już zapisaliśmy jakieś zmienne dane etc. to miejsce do zapisu przesuneło się do przodu ) które jest dalej od początku \0 zostanie nadpisane , będziemy powtarzac nadpisywanie jakiegos ciągu bez końca
to w drugim przypadku
w pierwszym czytamy i zapisujemy do tej samej komórki pamięci więc \0 zostanie znalezione
Przejdź do postu
szelbi
21.11.2013
W dokumentacji mamy napisane coś takiego:
Szybsza wersja funkcji format, lecz nie zadziała gdy tablica wynikowa jest użyta również jako jeden z parametrów.
Więc dlaczego poniższy kod działa mi bez najmniejszych problemów, skoro kierując się dokumentacją nie powinien?
formatex(lista_nickow, 189, "%s%s%s", lista_nickow, nicki_vipow[x], x<(count-1)?", ":"");
Droso
21.11.2013
Owszem to działa:
formatex(lista_nickow, 189, "%s%s%s", lista_nickow, nicki_vipow[x], x<(count-1)?", ":"");
ale już (zamiana miejscami)
formatex(lista_nickow, 189, "%s%s%s", nicki_vipow[x], lista_nickow, x<(count-1)?", ":"");
Będzie działać źle.
P.S Nie jestem pewien, ale chyba tak to było
szelbi
21.11.2013
Jaka wersja amxxa ?
Currently loaded plugins: description stat pend file vers src load unlod [ 1] AMX Mod X RUN - amxmodx_mm.dll v1.8.1.3 ini Start ANY [ 2] POD-Bot mm RUN - podbot_mm.dll v3.0B19d ini Chlvl ANY [ 3] Fun RUN - fun_amxx.dll v1.8.1.3 pl1 ANY ANY [ 4] CStrike RUN - cstrike_amxx.dll v1.8.1.3 pl1 ANY ANY [ 5] CSX RUN - csx_amxx.dll v1.8.1.3 pl1 ANY ANY 5 plugins, 5 running
sebul
21.11.2013
Już gdzieś o tym komuś pisałem.Owszem to działa:
formatex(lista_nickow, 189, "%s%s%s", lista_nickow, nicki_vipow[x], x<(count-1)?", ":"");ale już (zamiana miejscami)formatex(lista_nickow, 189, "%s%s%s", nicki_vipow[x], lista_nickow, x<(count-1)?", ":"");Będzie działać źle.
P.S Nie jestem pewien, ale chyba tak to było
P.S. Tak to było.
Najlepsza odpowiedź
DarkGL
21.11.2013
Dlatego że w drugim przypadku nie zostanie znalezione nigdy \0 ( koniec ciągu ) kopiowanie będzie czytać z początku stringa i dopisywać w pewnym miejscu w pamięci ( jako że już zapisaliśmy jakieś zmienne dane etc. to miejsce do zapisu przesuneło się do przodu ) które jest dalej od początku \0 zostanie nadpisane , będziemy powtarzac nadpisywanie jakiegos ciągu bez końca
to w drugim przypadku
w pierwszym czytamy i zapisujemy do tej samej komórki pamięci więc \0 zostanie znalezione
Użytkownik DarkGL edytował ten post 21.11.2013 17:29