'gdy nie ma pomyślnych przyporządkowań' Wiem, że scanf zwraca 0, aby to zaznaczyć, ale czy to jedyna rzecz, która robi? to jest mój kod:kiedy scanf zwraca 0 wc i po prostu nie działa
#include<stdio.h>
int main(void) {
int val,x;
x=scanf("%d",&val);
if(x==1)
printf("success!");
else{
printf("try again\n");
scanf("%d",&val);
}
return 0;
}
gdybym wprowadzić numer, to działa dobrze, ale jeśli mogę wprowadzić znak scanf już nie działa, to co ja dostać:
k
try again
process returned 0 (0x0) execution time :2.578 s
press any key to continue.
_
ten sposób, że nie pozwala mi wprowadzić nowej wartości, dlaczego tak jest? czy coś jest nie tak w kodzie? jeśli tak, jak mogę to naprawić? powinienem przestać używać scanf?
Nie używaj 'scanf'. Użyj 'fgets()', aby odczytać całą linię, a następnie użyj 'sscanf' do przetworzenia danych w linii. – Barmar
Nie należy również używać 'sscanf'. Użyj 'fgets()', aby przeczytać całą linię, a następnie użyj 'strtol' i przyjaciół, aby przetworzyć dane w linii. Tylko te funkcje są niezawodne w obliczu arbitralnie zniekształconego wejścia. – zwol
dziękuję! spróbuję tych rozwiązań! –