Zabezpieczenie przed podaniem niepożądanego znaku (scanf)

0

Zgodnie z dokumentacja, funkcja scanf zwraca liczbe poprawnie zainicjalizowanych zmiennych, lub w razie podania znaku nie zgodnego z formatem, liczbe ujemna.

Chcialbym zainicjalizowac zmienna liczba calkowita, wieksza od 0, mniejsza-rowna 100,
oraz zabezpieczyc przed podaniem innego typu danych.

Sposob pierwszy:

 while( scanf( " %d ", &dlugosc_wektorow )  < 0  || dlugosc_wektorow > 100 )

Sposob drugi:

 while( scanf( " %d ", &dlugosc_wektorow )  != 1  || dlugosc_wektorow > 100 )

Dlaczego zaden z nich nie dziala?

1

Zapewne dlugosc_wektorow > 100 jest prawdziwe. || to logiczny or.

1

Chcialbym zainicjalizowac zmienna liczba calkowita, wieksza od 0, mniejsza-rowna 100

To chyba tak:

dlugosc_wektorow > 0 && dlugosc_wektorow <= 100
0
kiyo napisał(a):

Chcialbym zainicjalizowac zmienna liczba calkowita, wieksza od 0, mniejsza-rowna 100

To chyba tak:

dlugosc_wektorow > 0 && dlugosc_wektorow <= 100

Nadal nie:

while( scanf( " %d ", &dlugosc_wektorow ) > 0 && dlugosc_wektorow <= 100 )

./Zadanie3
100
10000
-100
10000

0
blankow napisał(a):
kiyo napisał(a):

Chcialbym zainicjalizowac zmienna liczba calkowita, wieksza od 0, mniejsza-rowna 100

To chyba tak:

dlugosc_wektorow > 0 && dlugosc_wektorow <= 100

Nadal nie:

while( scanf( " %d ", &dlugosc_wektorow ) > 0 && dlugosc_wektorow <= 100 )

./Zadanie3
100
10000
-100
10000

./Zadanie3
100 // wpisuje 100 -> nic sie nie dzieje
10000 // wpisuje 10000 -> nic sie nie dzieje
-100 // wpisuje -100 -> program konczy dzialanie
10000 // printf( " %d ", dlugosc_wektorow )

1 użytkowników online, w tym zalogowanych: 0, gości: 1