Witam
Mam napisać program, w którym wczytuję dane ze standardowego wejścia, aż do napotkania znaku końca pliku. Dobrze byłoby to zrobić za pomocą scanf
while (scanf("%s",slowo) != EOF)
{
number = atoi(slowo);
printf("%s\n", slowo);
//dodatkowe zadania
........
I teraz tak wczytywanie dziala ok. Tzn mogę wczytać ciąg znaków, zamienić go na liczbę, ale nie działa prawidłowo CTRL+Z. Muszę wprowadzić kilka razy z klawiatury, zanim program wyjdzie z pętli while. Ktoś może powiedzieć dlaczego tak się dzieje i jak to naprawić.
Zamiast Ctrl+Z to może ci chodzi o Ctrl+D? Użyj tego wtedy jak wpisujesz z klawiatury, aby wysłać EOF gdy skończysz pisać; jeżeli czytasz z normalnego pliku to EOF samo będzie na końcu. Rozwiązanie powinno być takie:
#include <stdio.h>
#include <stdlib.h>
static char slowo[4096];
int main(int argc, char *argv[])
{
int number;
while(scanf("%s", slowo) != EOF)
{
number = atoi(slowo);
printf("%s\n", slowo);
}
return 0;
}
Nie wiem do czego ci służy zmienna number, ale może masz coś do dopisania w tej pętli.
EDIT:
Nie wiem jakiego systemu używasz, więc dopiszę: Ctrl+D to jest na linuxie, na windowsie zamiast tego po skończeniu wpisywania jest Ctrl+Z i Enter. Obie rzeczy muszą być wpisane w ostatniej pustej linii, czyli ostatnią linię z danymi kończysz Enterem i wpisujesz albo Ctrl+D albo Ctrl+Z i Enter.