Witam. Zastanawiam sie nad działaniem funkcji fgets. Otóż powinna działać podobnie do funkcji scanf, a przynajmniej wczytywać poprawnie znaki. Mam tutaj prostą funkcję zaczerpniętą z książki "C. Rusz głową". Autor podaje zastosowanie funkcji fgets w programie, który ma na celu znalezienie fragmentu łańcucha i zwrócenie odpowiedniego wiersza tablicy. Problemem jest to, że użycie fgets nie działa poprawnie, a zastosowanie funkcji scanf daje poprawny wynik. Co więcej, próba wywołania dwa razy funkcji, pierw dla scanf, potem dla fgets, kończy się jej pominięciem:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char tracks[][80] =
{"raz",
"dwa",
"trzy",
"cztery"
};
void find(char search[])
{
int i;
for(i=0; i<5; i++){
if(strstr(tracks[i],search))
fprintf(stdout,"Utwor %i: '%s'\n", i, tracks[i]);
}}
int main()
{ char lista[80];
printf("Wpisz utwor (scanf):\n");
scanf("%79s",lista);
find(lista);
printf("Wpisz utwor (fgets):\n");
fgets(lista,79,stdin);
find(lista);
printf("koniec");
return 0;
}
Co może być przyczyną tego, że funkcja fgets nie przekazuje łańcucha do funkcji find?