strejcradis 0 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Čauky, nemá někdo tušení jak je to v Pawnu s formátovaným načítáním do proměnných ze souboru txt? Mám souřadníce v souboru (viz. níže) a potřeboval bych je řádek po řádku načíst do pole floatů (X[1], Y[1], Z[1], X[2], Y[2], Z[2] atd.) Souřadnice sou uloženy takto 1702.7256,2172.8660,10.5323, 1782.6316,2136.3960,10.5622, 1853.8677,2052.3701,10.4450, 1926.4730,2068.8679,10.4125, Má někdo tip jak na to? :-) Link to comment Share on other sites More sharing options...
0 Albus Brambůrek 41 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 sscanf A nebo ještě toto http://wiki.sa-mp.com/wiki/Strtok Link to comment Share on other sites More sharing options...
0 strejcradis 0 Odesláno: 8. Leden, 2014 Author Share Odesláno: 8. Leden, 2014 Si musim sehnat knihovnu strtok jestli se nepletu? Link to comment Share on other sites More sharing options...
0 Albus Brambůrek 41 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Si musim sehnat knihovnu strtok jestli se nepletu? Je zahrnuta v includu <a_samp> Link to comment Share on other sites More sharing options...
0 strejcradis 0 Odesláno: 8. Leden, 2014 Author Share Odesláno: 8. Leden, 2014 Co tak koukam, tak sscanf rozdeli ten retezec jenom podle mezer, ne podle carek. Link to comment Share on other sites More sharing options...
0 Tanga 131 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Neviem ako v pawn, ale v Cčku sa to vždy dalo vyriešiť jednoduchšie.Nadefinoval si si pole premennych a indexom si v cykle for priraďoval načítaný údaj do pola..Na čítanie zo súboru sú perfektné knžnice, obzvlášť ak to nemusí byť priehladne, da sa použiť rychly file.inc.fwrite(x+"\r\n") a z freadu potom len odstrihneš ten nový riadok. ("\r\n") Link to comment Share on other sites More sharing options...
0 milous22 14 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Je zahrnuta v includu <a_samp> ___________________ omyl, funkcia strtok nie je dodávaná v includoch, musí si ju dodať každý sám ja používam túto verziu stock strtok(const str[], &index, seperator=' ') { new length = strlen(str); new offset = index; new result[100]; while ((index < length) && (str[index] != seperator) && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = str[index]; index++; } result[index - offset] = EOS; if ((index < length) && (str[index] == seperator)) { index++; } return result; } Link to comment Share on other sites More sharing options...
0 Albus Brambůrek 41 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Co tak koukam, tak sscanf rozdeli ten retezec jenom podle mezer, ne podle carek. Ale umí i podle znaků myslím že je to P argument Link to comment Share on other sites More sharing options...
0 rhsCZ 19 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Ale umí i podle znaků myslím že je to P argument sscanf v1 rozděluje myslim jen podle mezer sscanf v2 tj . pluginová verze umí mnohem víc Link to comment Share on other sites More sharing options...
0 Albus Brambůrek 41 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 sscanf v1 rozděluje myslim jen podle mezer sscanf v2 tj . pluginová verze umí mnohem víc Já mluvím o pluginové verzi... Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Na vsechno pouzivate includy a knihovny a mysli te si jaci jste programatori, ale kdyz to pak mate vytvorit a nemate to k dispozici jste pekne v p...., protoze nemate paru jak ty includy funguji new Float:Souradnice[MAX_SOURADNIC][3]; new LoadFile = fopen("Soubor.txt",io_read); new Data[256],count; while(fread(LoadFile,Data,sizeof(Data)) && count < sizeof(Souradnice))//pokud se poradilo precist radek a zaroven mame misto v promene pro nahrani (jde to napsat i forem) { Souradnice[count][0] = floatstr(Data);//tak vime ze na zacatku radku je Xova souradnice new pos = chrfind(',',Data)+1;//najdeme si nejblizsi carku z leva Souradnice[count][1] = floatstr(Data[pos]);//a hned za carkou vime ze je Ylonova souradnice pos = chrfind(',',Data,pos)+1;//nastavime startovni pozici te prvni carky (aby ji to nepocitalo) a nechame najit dalsi carku Souradnice[count][2] = floatstr(Data[pos]);//jsme nasli a vime ze tam je Ztova souradnice count++; } fclose(LoadFile); stock chrfind(n,h[],s=0) { new l = strlen(h); while(s < l) { if(h[s] == n) return s; s++; } return -1; } Link to comment Share on other sites More sharing options...
0 Tanga 131 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Atomas, opäť si napísal kód na to, čo som ja vymyslel xD. Jasne že nie, ale opäť je môj koment akosi NEVIDITELNY! Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Atomas, opäť si napísal kód na to, čo som ja vymyslel xD. Jasne že nie, ale opäť je môj koment akosi NEVIDITELNY! Asi je neviditelny protoze ja fakt nevidim ze by jsi mu nekde napsal, jak to z toho souboru precist Link to comment Share on other sites More sharing options...
0 Tanga 131 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 *Tvoje by bolo rýcheljšie, ale on chcel riadok po riadku .Citujem sa :1.) da sa použiť rychly file.inc.2.) Nadefinoval si si pole premennych 3.) indexom si v cykle for priraďoval načítaný údaj do pola4.) fwrite(x+"\r\n")5.) z freadu potom len odstrihneš ten nový riadok. ("\r\n")Názorná ukážka: #include <a_samp> #define ROZSAH 10 new Float:suradnice[ROZSAH]; vytvorenie() { new File:subor = fopen("Data.txt", io_write), string[16]; for (new i; i < ROZSAH; i++) { format(string, sizeof(string), "%f\r\n", suradnice[i]); fwrite(subor, string); } fclose(subor); } main() { new File:subor, riadok[16], i; suradnice[0] = 9.81; suradnice[1] = 2.71; suradnice[2] = 3.14; suradnice[3] = 1.61; vytvorenie(); subor = fopen("Data.txt", io_read); for ( ; i < ROZSAH; i++) { fread(subor, riadok); strdel(riadok, strlen(riadok) - 2, strlen(riadok)); suradnice[i] = floatstr(riadok); } fclose(subor); for (i = 0; i < ROZSAH; i++) printf("%f", suradnice[i]); } Link to comment Share on other sites More sharing options...
0 Administrátor Ewwe 434 Odesláno: 8. Leden, 2014 Administrátor Share Odesláno: 8. Leden, 2014 jinak plg verze sscanf new sou[3]; sscanf(nactenyradek,"pfff",sou); Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 8. Leden, 2014 Share Odesláno: 8. Leden, 2014 Tvoje by bolo rýcheljšie, ale on chcel riadok po riadku Chtel aby to nacitalo takto: Souřadnice sou uloženy takto 1702.7256,2172.8660,10.5323, 1782.6316,2136.3960,10.5622, 1853.8677,2052.3701,10.4450, 1926.4730,2068.8679,10.4125, PS: Kdyz pouzivas strval nebo floatstr tak nemusis nic odmazavat Link to comment Share on other sites More sharing options...
0 strejcradis 0 Odesláno: 9. Leden, 2014 Author Share Odesláno: 9. Leden, 2014 Už sem to vyřešil. Dík všem moc za pomoc. Použil sem jako základ věci co jste tu napsali, akorát si tam přidal ještě fseek na posouvání po každém otevření :-) Prosím o LOCK Link to comment Share on other sites More sharing options...
Dotaz
strejcradis 0
Čauky,
nemá někdo tušení jak je to v Pawnu s formátovaným načítáním do proměnných ze souboru txt?
Mám souřadníce v souboru (viz. níže) a potřeboval bych je řádek po řádku načíst do pole floatů (X[1], Y[1], Z[1], X[2], Y[2], Z[2] atd.)
Souřadnice sou uloženy takto
Link to comment
Share on other sites
16 odpovědí na tuto otázku
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now