Wpis z mikrobloga

#programowanie #jezykc #clang mam pytanie odnosnie funkcji sscanf w jezyku C. Wczytuje dane z pliku tekstowego, i czesc zmiennych wejsciowych (tzn data) ustawionych jest na sztywno, i w kazdej linijce wyglada tak samo . natomiast po dacie są trzy możliwości danych wejsciowych z czego 2 to stringi a 1 to integer. jak mozna w jakis sensowny sposob wprowadzic wszystkie zmienne w zaleznosci od linijki w ktorej się znajdujemy? dziekuje
J.....L - #programowanie #jezykc #clang mam pytanie odnosnie funkcji sscanf w jezyku ...

źródło: comment_SwTrhwm5ExL93hn53Zw3HY8FcL1ZNVTj.jpg

Pobierz
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@JungleJamPL: sscanf zwraca ilosc zmaczowanych parametrów

petla po linijkach probujesz zmaczowac do wzorca z swoma stringami jezeli wynik rowny tyle ile ma wyjsc to nastepna linia, jezeli mniejszy do do tej samej lini dla wzorca z jednym intem

btw. to w ogole działa? sciagasz fragmenty nie po linijkach tylko po jakims tam rozmiarze rablicy
samym fscanfem mozna to zrobic bez fgets
  • Odpowiedz
@JungleJamPL: fscanf zwraca ile wzorcow zostalo dopasowanych nie wiem czemu porównujesz do 1
1) fsanf sie wykona raz -> dopasuje 4 wzorce month,day,hour minute - zapisze je do zmiennych
2) calosc wyrazenia zewaluje sie do 4
3) porownanie 4 do 1 -> false
4) wychodzimy z petli

Ja o tej liczbie dopasowanych wzorcow mowilem w kontekscie tego jak rozpoznawac ktory wzorzec zostal zastosowany. Czytanie oczywiscie powinno sie zakonczyc z innym
  • Odpowiedz
@Maka_Albarn: dzieki, super rozwiązanie problemu. chociaż walczylismy tak zeby tym fscanf'em to napisać , a w koncu stanęło na fgets'ie i sscanf'ie . natomiast samo zastosowanie warunku if zamiast switch/case'u wydaje się dodawać prostoty. eleganckie podejscie .będzie na pewno do czego wracać, bo na tydzień trzeba się zanurzyć się w świat matematyki
  • Odpowiedz
@Maka_Albarn: natomiast wystarczy ze algorytm od strony logicznej pozbawimy chara "mock" ktory ma wskazywac na new line, to nagle pojawia się niezgodność w wartościach i wzkaznik marker , który ma sygnalizować czy Guard jest asleep, awake czy starts shift nie dziala, i ma zawsze tą samą wartość.
ja z góry załozyłem że funkcja fgets sama w sobie pobiera do bufferu cała linijkę aż będzie new line, i nie trzeba jej
J.....L - @Maka_Albarn: natomiast wystarczy ze algorytm od strony logicznej pozbawimy...

źródło: comment_dCvKLsLbN92bUyb9eNvYF9B4VBOSiZ3d.jpg

Pobierz
  • Odpowiedz
@JungleJamPL: mnie tu nie chodzi o sprawdzenie nowej lini tylko czy wzorzec sie zaciagnął
generalnie to scanf obsluguje pewne uposledzone wyrazenia regularne i uposledzone to jest tutaj słowo klucz

masz taki problem, ze chcesz wiedziec kiedy wzorzec sie zgadza, ale scanf nie wypisuje ci tego(no chyba, ze przez jakies erno, ale to nie wiem), tylko wypisuje ile parametrów udało mu sie sparsować. Oznacza to ze dla wzorców
"%d nawóz" zwroci
  • Odpowiedz