new Nev[60] = \"Florian_Horvath\";
new AlsoVonal = strfind(Nev, \"_\", false);
new SzovegVege = strlen(Nev);
strdel(Nev, AlsoVonal, SzovegVege);
printf(\"\\n %s \\n\", Nev);
Szerintem ez sokkal jobb és modernebb viszont plugin és include kell hozzá :)Minek túl bonyolítani?
[pawn]
new Nev[60] = \"Florian_Horvath\";
new NevElso[30];
new NevMasodik[30];
sscanf(Nev, \"p<_>s[30]s[30]\",NevElso, NevMasodik);
printf(\"%s, a %s családból csatlakozott a szerverhez\",NevElso,NevMasodik);
[/pawn]
Kimenet:
[pawn]
Florian, a Horvath családból csatlakozott a szerverhez
[/pawn]
new nev[16] = \"Teszt_Nev\";
print(nev); //kiírja az alábbit: Teszt_Nev
new
i = -1;
while((++i < strlen(nev)))
if(nev == \'_\')
nev = \' \';
print(nev); //kiírja az alábbit: Teszt Nev
new nev[16] = \"Teszt_Nev\";
print(nev); //kiírja az alábbit: Teszt_Nev
new
i = -1;
while((++i < strlen(nev)))
if(nev == \'_\')
nev = \' \';
print(nev); //kiírja az alábbit: Teszt Nev
Illetve az sscanfos kód nem valami jó, mivel tegyük fel akinek három tagos neve van (pl: John_W_Smith) akkor az alábbit fogja kiírni: John W_Smith. Így ezzel a kóddal átfutunk a nevén egy ciklussal és ha az \"i\" tag egyenlõ \"_\"-vel akkor kicseréljük \" \"-re (azaz szóközre).
Minek túl bonyolítani?
[/quote]
new nev[16] = \"Teszt_Nev\";
print(nev); //kiírja az alábbit: Teszt_Nev
new
i = -1;
while((++i < strlen(nev)))
if(nev == \'_\')
nev = \' \';
print(nev); //kiírja az alábbit: Teszt Nev
Illetve az sscanfos kód nem valami jó, mivel tegyük fel akinek három tagos neve van (pl: John_W_Smith) akkor az alábbit fogja kiírni: John W_Smith. Így ezzel a kóddal átfutunk a nevén egy ciklussal és ha az \"i\" tag egyenlõ \"_\"-vel akkor kicseréljük \" \"-re (azaz szóközre).
Minek túl bonyolítani?
[/quote]
[/quote]
@1ST_Chr
Nem tudom számodra ezen mi a bonyolult, de sscanf már bonyolult, a first verzió ebben a témában meg túl sok native funkciót használ (amiben szintén belsõ ciklusok vannak), emiatt már bonyolultabb.
DrAke megoldása meg egyetlen for ciklussal végzi a dolgát. (lehet rajt egyszerûsíteni még. (tipp: strlen nélkül)) (persze ez nem tér vissza a lehetséges vezetéknév tartalmával csak kicseréli az _(alsóvonal)-kat, szóközre)
Bármelyik szöveg részt vissza lehet kapni, függetlenül attól, mennyi _ (alsóvonal) szerepel a karakterláncban.
Még az strtok függvényt is fel lehet használni egy kis módosítással. (delimiter paraméter kibõvítéssel).
new nev[16] = \"Teszt_Nev\";
print(nev); //kiírja az alábbit: Teszt_Nev
new
i = -1;
while((++i < strlen(nev)))
if(nev == \'_\')
nev = \' \';
print(nev); //kiírja az alábbit: Teszt Nev
Illetve az sscanfos kód nem valami jó, mivel tegyük fel akinek három tagos neve van (pl: John_W_Smith) akkor az alábbit fogja kiírni: John W_Smith. Így ezzel a kóddal átfutunk a nevén egy ciklussal és ha az \"i\" tag egyenlõ \"_\"-vel akkor kicseréljük \" \"-re (azaz szóközre).
Minek túl bonyolítani?
[/quote]
[/quote]
@1ST_Chr
Nem tudom számodra ezen mi a bonyolult, de sscanf már bonyolult, a first verzió ebben a témában meg túl sok native funkciót használ (amiben szintén belsõ ciklusok vannak), emiatt már bonyolultabb.
DrAke megoldása meg egyetlen for ciklussal végzi a dolgát. (lehet rajt egyszerûsíteni még. (tipp: strlen nélkül)) (persze ez nem tér vissza a lehetséges vezetéknév tartalmával csak kicseréli az _(alsóvonal)-kat, szóközre)
Bármelyik szöveg részt vissza lehet kapni, függetlenül attól, mennyi _ (alsóvonal) szerepel a karakterláncban.
Még az strtok függvényt is fel lehet használni egy kis módosítással. (delimiter paraméter kibõvítéssel).
[/quote]
Még egyszerûbb:
print(\"Betöltve!\");
new nev[16] = \"Teszt_Nev\";
print(nev);
new
i = 0;
while(((nev == \'_\') ? (nev = \' \') : (nev = nev))) i++;
print(nev);