Kurs programowania w C cz. 58

Nasza ocena:

5
Wyświetleń: 525
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C cz. 58 - strona 1

Fragment notatki:

72 ROZDZIAŁ 10. PODSTAWOWE PROCEDURY WEJŚCIA I WYJŚCIA czyta tekst aż do napotkania znaku przejścia do nowej linii, który także zapisuje w wynikowej tablicy (funkcja gets() tego nie robi). Jeżeli brakuje miejsca w tablicy to funkcja przerywa czytanie, w ten sposób, aby sprawdzić czy została wczytana cała linia czy tylko jej część należy sprawdzić czy ostatnim znakiem nie jest znak przejścia do nowej linii. Jeżeli nastąpił jakiś błąd lub na wejściu nie ma już danych funkcja zwraca wartość NULL. #include  int main(void) { char buffer[128], whole_line = 1, *ch; while (fgets(buffer, sizeof buffer, stdin)) { /* 1 */ if (whole_line) { /* 2 */ putchar(’’); if (buffer[0]!=’’) { putchar(’ ’); } } fputs(buffer, stdout); /* 3 */ for (ch = buffer; *ch && *ch!=’\n’; ++ch); /* 4 */ whole_line = *ch == ’\n’; } if (!whole_line) { putchar(’\n’); } return 0; } Powyższy kod wczytuje dane ze standardowego wejścia — linia po linii — i dodaje na początku każdej linii znak większości, po którym dodaje spację jeżeli pierwszym znakiem na linii nie jest znak większości. W linijce 1 następuje odczytywanie linii. Jeżeli nie ma już więcej danych lub nastąpił błąd wejścia funkcja zwraca wartość NULL, która ma logiczną wartość 0 i wówczas pętla kończy działanie. W przeciwnym wypadku funkcja zwraca po prostu pierwszy argument, który ma wartość logiczną 1. W linijce 2 sprawdzamy, czy poprzednie wywołanie funkcji wczytało całą linię, czy tylko jej część — jeżeli całą to teraz jesteśmy na początku linii i należy dodać znak większości. W linii 3 najzwyczajniej w świecie wypisujemy linię. W linii 4 przeszukujemy tablicę znak po znaku, aż do momentu, gdy znajdziemy znak o kodzie 0 kończącym  ciąg znaków albo znak przejścia do nowej linii. Ten drugi przypadek oznacza, że funkcja fgets() wczytała całą linię. Więcej o funkcji fgets() Funkcja getchar() Jest to bardzo prosta funkcja, wczytująca 1 znak z klawiatury. W wielu przypad- kach dane mogą być buforowane przez co wysyłane są do programu dopiero, gdy bufor zostaje przepełniony lub na wejściu jest znak przejścia do nowej linii. Z tego powodu po wpisaniu danego znaku należy nacisnąć klawisz enter, aczkolwiek trzeba pamię- tać, że w następnym wywołaniu zostanie zwrócony znak przejścia do nowej linii. Gdy nastąpił błąd lub nie ma już więcej danych funkcja zwraca wartość EOF (która ma ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz