←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[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
Zablokowany

  • +
  • -
szelbi - zdjęcie 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)?", ":"");
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 21.11.2013

Jaka wersja amxxa ?

Odpowiedz

  • +
  • -
Droso - zdjęcie 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 ;)

Odpowiedz

  • +
  • -
szelbi - zdjęcie 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
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 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 ;)

Już gdzieś o tym komuś pisałem.

P.S. Tak to było.
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 21.11.2013

Otworzyłem temat na prośbę Darka. 

Odpowiedz

  • +
  • -
Najlepsza odpowiedź DarkGL - zdjęcie 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
Odpowiedz
Zablokowany