turbol
turbol
#naukaprogramowania #programowanie #cplusplus

Czy mógłby mi ktoś wytłumaczyć dokładnie jak to działa i co robi ten kawałek kodu?
Wiem, że ten wycinek sprawdza czy podana wartość jest liczbą. Jeśli podam np literkę to będzie czekało dalej aż podam cyfrę. Tylko jak to działa?

while(scanf("%f", &zmienna) != 1){
int ch;
while((ch = getchar()) != '\n' && ch != EOF){
};
}
1
  • Najlepsze
  • Wszystkie komentarze
damianex19
damianex19
@turbol: wypad z tej branży nie ma odpowiedzi, jesteś konkurencją na rynku pracy
1
keton22
@turbol: scanf zwraca ilość specyfikatorów które zostały z sukcesem wczytane. Czyli dopóki nie podasz stringa który może być skonwertowany na float wykonuje się to co w while() - getchar() "zjada" input aż do znaku nowej linii lub końca strumienia wejścia.
1
keton22
@turbol: u welkom a na przyszłość https://www.gnu.org/software/libc/manual/html_node/index.html pomaga w takich sytuacjach.
1
lionbest
@turbol: Ten kawałek kodu z #jezykc robi dokładnie to samo co poniższa linijka napisana w C++:

while( std::cin >> zmienna ) std::cin.ignore(std::numeric_limits::max(), '\n');
1
PrawieJakBordo
@turbol: wydaje mi się że to część kodu służacego do odczytu/zapisu danych do pliku. Bardziej też mi to na C niż Cpp wygląda ale tutaj głowy uciąć sobie nie dam
0
turbol
turbol
@PrawieJakBordo: to język c, ten kawałek kodu służy do 'filtracji' wpisywanej wartości i jeśli wpiszesz coś innego niż liczba to program nie puszcza dalej

@damianex19: fajne, to już możesz wydupcać z posta i nie pajacować
0
PrawieJakBordo
@turbol:
int ch;
while((ch = getchar()) != '\n' && ch != EOF){ //wykonuj pętle dopóki użytkownik wciska litere/cyfre która nie jest enterem i dopóki nie skończył się plik - ja to tak rozumiem
0
turbol
turbol
@keton22: thx
0