C/Podstawowe procedury wejścia i wyjścia: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Mina86 (dyskusja | edycje)
m →‎Wejście/wyjście: porpawiony zły spójnik w przypisie
Mina86 (dyskusja | edycje)
→‎Funkcja scanf(): zamiast czytać znak po znaku scanf("%*s");
Linia 207:
printf("%d\n", n*n*n);
} else if (!result) { /* !result to to samo co result==0 */
charresult c= scanf("%*s");
/* odczytuj po jednym znaku aż do napotkania spacji
lub znaku przejścia do nowej linii */
result = scanf("%c", &c);
while (result==1 && c!=' ' && c!='\n') {
result = scanf("%c", &c);
}
}
} while (result!=EOF);
Linia 219 ⟶ 213:
}
 
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 następujewywołujemy odczyt danych znak po znaku<ref>Zamiast używać funkcjifunkcję scanf() możnaz tutajformatem użyćodczytującym funkcjidowolny getchar()ciąg opisanejznaków niżej.</ref>nie będący dobiałymi momentu,znakami gdyz funkcjajednoczesnym zwróci EOF (co oznaczaokreśleniem, żeżeby nie ma już więcej danych lub nastąpił błąd) lub odczytany znak to spacja lub przejście do nowej linii<ref>Lepiej zapewne byłoby użyć funkcji isspace() z plikuzapisywała nagłówkowegonigdzie ctype.h.</ref>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.
 
[[C/scanf|Więcej o funkcji scanf()]]