C nie zwiększa złożoności przetwarzania tekstu. Usuwa warstwy abstrakcji i pozostawia nagą mechanikę. Jeśli przejrzałeś dokumentację C, prawdopodobnie zauważyłeś, że wszystkie funkcje wprowadzania/wyprowadzania tekstu znajdują się w bibliotece stdio. Jest to skrót od Standardowe wejście/wyjście. Stanowi podstawę interakcji programów C ze światem zewnętrznym.
Większość początkujących zaczyna od stdin i stdout. Są to standardowe strumienie. Wskazują, skąd program pobiera dane i dokąd wysyła wyniki. Jeśli Twoja aplikacja potrzebuje tylko jednego źródła wejściowego i jednego ujścia wyjściowego, nie potrzebujesz skomplikowanej manipulacji plikami. Po prostu przekazujesz dane przez wiersz poleceń.
Sześć podstawowych wątków
Nagłówek stdio udostępnia sześć konkretnych poleceń umożliwiających interakcję z tymi wątkami. Są proste. Bezpośredni.
- printf : Zapisuje sformatowany tekst na stdout.
- scanf : Odczytuje sformatowane dane z stdin.
- wstawia : Wypisuje ciąg znaków na ekranie.
- pobiera : Odczytuje wiersz tekstu z klawiatury.
- putc : Zapisuje jeden znak na stdout.
- getc lub getchar : Odczytuje jeden znak z stdin.
Dlaczego ich używać? Ponieważ można je przekierować. Tu właśnie pojawia się siła języka C. Nie musisz zmieniać kodu, aby odczytywać dane z pliku zamiast z klawiatury. Wystarczy zmienić polecenie wprowadzone w terminalu.
Proste liczenie znaków
Spójrzmy na praktyczny przykład. Wyobraź sobie, że potrzebujesz programu, który zlicza całkowitą liczbę znaków we wprowadzanym tekście. Oto kod:
Ten kod oczekuje na wprowadzenie. Wpisujesz ciągi. Kiedy skończysz, naciśnij CTRL-D. Sygnalizuje to koniec pliku (eof ). Funkcja gets zwraca zero po osiągnięciu końca pliku, co przerywa pętlę. Ostateczny licznik zostanie wyświetlony na ekranie.
Ale oto sztuczka. Nie trzeba było edytować kodu, aby policzyć znaki w pliku. Właśnie dodałeś małą instrukcję do powłoki.
Przekierowanie wejścia i wyjścia
Jeśli skompilowałeś ten program do pliku wykonywalnego o nazwie xxx, możesz nadać mu ten plik.
,,bicie Rezultat jest taki sam. Polecenie cat wypisuje zawartość pliku na standardowe wyjście. Potok przekazuje go do twojego programu. Możesz także przekierować dane wyjściowe. Zamiast widzieć liczbę na ekranie, możesz ją zapisać. ,,bicie Teraz xxx czyta z nazwa pliku i zapisuje wynik do nowego pliku tekstowego o nazwie out. To potężna szansa. Umożliwia łączenie narzędzi bez konieczności pisania dodatkowego kodu obsługującego wskaźniki plików. Czasami przekierowanie nie wystarczy. Może zaistnieć potrzeba otwarcia wielu plików jednocześnie. Być może tworzysz edytor tekstu, który zapisuje pliki konfiguracyjne. Może być konieczne sprawdzenie, czy plik dotarł do końca bez powodowania awarii. W takich przypadkach potrzebne są możliwości bezpośredniej manipulacji plikami. Można je również znaleźć w stdio, ale działają na wskaźnikach plików, a nie na standardowych strumieniach. Te funkcje zapewniają większą kontrolę. Możesz zarządzać wieloma wątkami jednocześnie. Możesz dokładnie zdecydować, jakie dane zostaną zapisane w jakim pliku. Którą ścieżkę wybierzesz? Łatwość przekierowania stdin lub kontrola bezpośrednich wskaźników plików? To zależy od tego, co tworzysz. W przypadku szybkich skryptów króluje przekierowanie. W przypadku złożonych aplikacji potrzebne będą funkcje zarządzania plikami. Nie ma idealnej odpowiedzi. Są tylko kompromisy.
xxx
xxx
“`Gdy nie ma wystarczającej liczby wątków





















