Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuwanie znaku z pliku
Forum PHP.pl > Forum > Przedszkole
marcin909090
Witam, jak usunąć pojedynczy znak z pliku.
Treść pliku to np. "3,2,4,6,2,3,6,32,3,4,13,425,32,23,4,1,45,34".
Mój skrypt znajduje najmniejszą wartość i zapisuje do nowego pliku czytając plik od początku do końca po znaku. Muszę usunąć tą wartość i znów przeszukać cały plik do momentu aż posortuję liczby w nowym pliku.
Skrypt porównuje po kolei dane liczby, na końcu umieszczając w zmiennej najmniejszą wartością jaką jest na początku "1". Jak usunąć tą wartość z pliku aby dalej szukać kolejnej najmniejszej wartości.

Warunek : Plik musi być czytany znak po znaku albo bajt po bajcie !
kajzur
Zapamiętaj w zmiennej ostatnią znalezioną liczbę i omijaj ją w szukaniu. Poza szukaniem (już drugiej) najmniejszej liczby twórz listę reszty liczb i zapisz ją do pliku z którego czytasz.
marcin909090
A gdy liczba się powtarza ? Dodam jeszcze ze liczb może być miliony, a plik może mieć kilka GB.
Pyton_000
j.w kolega @kajzur z tą różnicą że zapisuj offset. http://php.net/manual/en/function.ftell.php
marcin909090
  1. while (!feof($plik_pobrany))
  2. {
  3. $tmp=fgetc($plik_pobrany);
  4.  
  5. if($tmp!=",")
  6. {
  7. if(is_numeric($tmp))
  8. {
  9. echo $a.=$tmp;
  10. }
  11. }
  12. else
  13. {
  14. if(!isset($b))
  15. {
  16. $b=$a;
  17. }
  18. elseif(isset($b))
  19. {
  20. $b=intval($b);
  21. $a=intval($a);
  22. if($b>$a)
  23. {
  24. $b=$a;
  25. }
  26. }
  27. $a='';
  28. }
  29. }


Po pętli w zmiennej $b mam najmniejszą liczbę. Mam zapisać jej pozycję wskaźnika ?
Jak mając pozycję wskaźnika mam ominąć już znalezione miejsce wystąpienia najmniejszej wartości, a później kolejne i kolejne miejsca?
Tablica z milionem wartości do ominięcia ?
Czy te znalezione pozycje wskaźnika zapisać do innego pliku i stworzyć pętle najmniejszych już znalezionych wartości w
w pętli szukania z pierwszego pliku. To dalej będzie nie optymalne albo się mylę
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.