Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> funkcja fscanf, W C++ nie miałem problemu z wczytaniem liczb z pliku zawier. macierz
mkmich
post 3.12.2011, 19:29:53
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 23.02.2011

Ostrzeżenie: (0%)
-----


Witam!
W C++ nie miałem problemu z wczytaniem liczb z pliku tekstowego zawier. macierz liczb przy pomocy f-kcji
fscanf(). W PHP po zastosowaniu tej f_kcji postaci fscanf($fx,"%f",$x)
w procedurze: $i=0; while(fscanf($fx,"%f",$x)==1) { od[$i] = $x; $i++;}
sczytuje cały wiersz macierzy i koniec !? A co z pozostałymi wierszami ? Użycie drugiej pętli while(!(feof($fx))) { } nic nie dało, a zależy mi aby załą macierz wstawić do tablicy jednowymiarowej od[].
Pozdr.[php][/php]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Crozin
post 3.12.2011, 20:27:17
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Z dokumentacji funkcji fscanf:
Cytat
Each call to fscanf() reads one line from the file.
Mógłbyś to wykonać np. tak:
  1. $od = array();
  2.  
  3. while ($line = fscanf($fp, "%f")) {
  4. $od = array_merge($od, $line);
  5. }
Go to the top of the page
+Quote Post
mkmich
post 3.12.2011, 22:13:01
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 23.02.2011

Ostrzeżenie: (0%)
-----


[php][/php]
Dzięki!
Ale do tablicy $od wczytuje pierwszy wiersz macierzy i koniec. Macierz ma wymiary 9 x 9.
W tym to jest problem. Do tablicy $od mozna wczytac pozostałe wiersze przy pomocy
np. $od = file('macierz.txt') gdzie macierz.txt zawiera wspomnianą macierz liczb 9 x 9.
Pozd.
Go to the top of the page
+Quote Post
zegarek84
post 3.12.2011, 22:55:48
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


w c++ jakoś zawsze wolałem strumienie od fscanf (a i też tego mało było) zaś w PHP jakoś zawsze wyrażenia regularne... ale...

luknij na manual, funkcja fscanf może Ci wczytać więcej niż jedną linię... a w przykładzie w manualu separowali zmienne białymi znakami i na końcu podali nawet znak nowej linii \n (w windowsie to \r\n)... nie chce mi się sprawdzać przypadków tylko pokazuję, co w oczy kole i porównaj z manualem:
fscanf


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
mkmich
post 14.12.2011, 12:24:57
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 23.02.2011

Ostrzeżenie: (0%)
-----


[php][/php]
Witam!
Bez pomocy funkcji fscaf() można wczytać macierz liczbową do tablicy jednowymiarowej.
Przykład:
Niech plik tekstowy test.txt zawiera następująca macierz liczb:
0 5 7
9 6 8
11 3 4
Separatorem liczb w tym przypadku jest spacja (tylko jedna), może być np ";".
I dalej.
$fx = './test.txt';
$fy = file($fx); //$fy - tablica 3 elementowa zawierająca wiersze macierzy
foreach($fy as $line_num => $line)
{ $fxy = explode(" ", $line); // $fxy - tablica zawierajaca elementy wiersza macierzy
$fz = array_merge($fz,$fxy); // $fz - jenowymiarowa tablica elementów macierz test.txt
}
$ilosc_elm_macierzy = count($fz);
// zamiana łańcucha na liczby
for($i = 0; $i < $ilosc_elm_macierz; $i++)
{
$fz[$i] = (double) $fz[$i];
}

Może komuś się przyda to rozwiazanie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:45