Symulacja EOF nie działa

0

Witam,mam taki problem z kodem w C,że chcąc aby program przerywał pętlę po zasymulowaniu znaku EOF (Ctrl+z,bo windows),program go wgl nie uwzględnia.
Kiedy wpiszę -1 wszystko jest ok.O co chodzi? Czy to problem z formatowaniem %d ? Jak jest odbierany znak EOF przez system,skoro nie przez %d ?

Kod wygląda następująco:

while(1)
{
printf("Enter a number to convert it: ");
while((1!=scanf("%d",&number))&&(number!=EOF))
{
printf("\n\nUps!Something went wrong.Try again.\nEnter a number to convert it: ");
while(getchar()!='\n');
}
if (number==EOF) break;
printf("Enter a conversion system: ");
while(1!=scanf("%d",&system)|| (system<2 || system>10))
{
printf("\n\nUps!Something went wrong.Try again.\nEnter a conversion system: ");
while(getchar()!='\n');
}
convert(number,system);
}
 
0

Przecież w tej pętli wczytujesz liczbę, a nie znak.
Poza tym formatowanie kodu do śmieci.

0

Czyli mam rozumieć ,że "ctrl+z" jest traktowany jako "char type" ?

Co do formatowania,jakieś porady? Będę wdzięczny,bo dopiero zaczynam ;)

0

No na pewno Ctrl+Z nie jest liczbą ;P
A poradników odnośnie formatowania w C masz jak mrówków.

0

Ok.Poczytam w takim razie :)
Dla pewności,pisząc o "formatowaniu" masz na myśli tylko kwestie spacji,nowych linii itp. ?
Czy również samo rozwiązanie i zastosowane funkcje,rozwiązania są mało czytelne?

0

http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

Ten kod powinien wyglądać tak:

unsigned int
  number = readUint('Enter a number to convert it:'),
  base = readUint('Enter the new base:');

A funkcję readUint to już sobie sam napisz ;)

0

O kurde,bardzo ciekawe rozwiązanie. Nawet nie przeszło mi przez myśl żeby pisać do takich rzeczy kolejne funkcje.A co jak co,w przypadku bardziej rozbudowanych kodów taki styl pisania będzie zbawieniem dla czytelności kodu. Dzięki wielkie za podpowiedź !

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