Kurs programowania w C cz. 57

Nasza ocena:

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

Pobierz ten dokument za darmo

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

Fragment notatki:

FUNKCJE WEJŚCIA 71 musi ignorować błędne dane (tzn. pomijać ciągi znaków, które nie są liczbami) i kończyć działanie tylko w momencie, gdy nastąpi błąd odczytu lub koniec pli ku3. #include  int main(void) { int result, n; do { result = scanf("%d", &n); if (result==1) { printf("%d\n", n*n*n); } else if (!result) { /* !result to to samo co result==0 */ result = scanf("%*s"); } } while (result!=EOF); return 0; } Zastanówmy się przez chwilę co się dzieje w programie. Najpierw wywoływana jest funkcja scanf() i następuje próba odczytu liczby typu int. Jeżeli funkcja zwróciła 1 to liczba została poprawnie odczytana i następuje wypisanie jej trzeciej potęgi. Jeżeli funkcja zwróciła 0 to na wejściu były jakieś dane, które nie wyglądały jak liczba. W tej sytuacji wywołujemy funkcję scanf() z formatem odczytującym dowolny ciąg znaków nie będący białymi znakami z jednoczesnym określeniem, żeby nie zapisywała nigdzie wyniku. W ten sposób niepoprawnie wpisana dana jest omijana. Pętla główna wykonuje się tak długo jak długo funkcja scanf() nie zwróci wartości EOF. Więcej o funkcji scanf() Funkcja gets Funkcja gets służy do wczytania pojedynczej linii. Może Ci się to wydać dziwne, ale: funkcji tej  nie należy używać pod żadnym pozorem . Przyjmuje ona jeden argument — adres pierwszego elementu tablicy, do którego należy zapisać odczytaną linię — i nic poza tym. Z tego powodu nie ma żadnej możliwości przekazania do tej funkcji rozmiaru bufora podanego jako argument. Podobnie jak w przypadku scanf() może to doprowadzić do przepełnienia bufora, co może mieć tragiczne skutki. Zamiast tej funkcji należy używać funkcji fgets(). Więcej o funkcji gets() Funkcja fgets Funkcja fgets() jest bezpieczną wersją funkcji gets(), która dodatkowo może ope- rować na dowolnych strumieniach wejściowych. Jej użycie jest następujące: fgets(tablica_znaków, rozmiar_tablicy_znaków, stdin); Na chwilę obecną nie musisz się przejmować ostatnim argumentem (jest to określe- nie strumienia, w naszym przypadku standardowe wejście —  st an d ard  in put). Funkcja 3Jak rozróżniać te dwa zdarzenia dowiesz się w rozdziale  Czytanie i pisanie do plików. ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz