Jump to content
  • 0

pomoc Načítaní souřadnic ze souboru


strejcradis

Dotaz

Č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

16 odpovědí na tuto otázku

Recommended Posts

  • 0

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

  • 0

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

  • 0

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 :d

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

  • 0

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

  • 0

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 :d

Link to comment
Share on other sites

  • 0

*Tvoje by bolo rýcheljšie, ale on chcel riadok po riadku :p.
Citujem sa :d :
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 pola
4.) 
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

  • 0

 

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,
:d
PS: Kdyz pouzivas strval nebo floatstr tak nemusis nic odmazavat :)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...