[c] Brak Spacji we wczytywaniu z pliku do tablicy

0

Cześć. Zaczynam przygodę z programowaniem i nie wiem czemu podany kod wczytuje wsyzstko co jest w pliku z wyjątkiem spacji i je "przekskuje". W pliku znajduje się np. "ALA MA KOTA" a program wczytuje to jako "ALAMAKOTA". Próbowałem zrobić to fgetsem zmieniając linijkę

   fscanf(zd, "%c\n", &zdanie[i]); 

na

  fgets(zdanie,100,zd);

ta zmiana niestety zapisuje tylko 2 pierwsze znaki. W każdym razie tyle wypisuje zamiast wszystkich. Z góry dziękuję za odpowiedź.

FILE *zd= fopen("haslo.txt", "r");
    i= 0;
    if(!zd)
    {
        puts("Brak pliku klucz.txt");
    }
    while (feof(zd)== 0)
    {
        fscanf(zd, "%c\n", &zdanie[i]);
        printf("%c", zdanie[i]);
        ++i;
    } 
0
FILE *zd=fopen("haslo.txt","r");
fgets(zdanie,100,zd);
printf("%s",zdanie);
fclose(zd);
0

Dzięki działa :) A możesz mi wytłumaczyć przyczynę ?

0

przyczynę czego?

0

Wypisywania 2 znakow bo róznica między kodami z tego co zauważyłem to tylko string. Logiczne, że string wypisuje cały ciąg znaków ale dlaczego char wypisywał 2 znaki zamiast 1 jak zgodnie z definicją powienien ?

0

Pierwszy raz wczytano cały napis zaś wyświetliłeś pierwszą literę, ale wskaźnik pliku jeszcze nie doszedł do końca.
Drugie wczytanie się nie udało bo napotkano koniec pliku ale wyświetliłeś drugą literę.
Trzeciego wczytywania nie było bo feofzwrócił 1

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