Zadanie: wczytywanie linii, odwrócenie kolejności.

0

Witam, uczę się C korzystając ze znanej książki Stephena Praty. Mam problem z następującym zadaniem:
"Napisz program, który pobiera ze standardowego urządzenia wejściowego linię i wyświetla ją w odwrotnej kolejności. Możesz zachować pobrane wartości w tablicy char; załóż, że linia nie może być dłuższa niż 255 znaków. Przypomnij sobie, że funkcję scanf() można stosować ze specyfikatorem %c aby czytać zaki po kolei - aż do wprowadzenia znaku nowej linii (\n), klawiszem enter."
Konkretniej problem mam z wcztywaniem tej linii. Tworzę tablicę:

char tab[255];

Wpisuje

scanf("%s",tab);

Problem w tym, że wczytuje wtedy tylko pierwsze słowo, bez spacji. Próbowałem

scanf("%c",tab);

Tym razem jednak wczytuje tylko pierwszy znak. Nie wiem co innego by tutaj, myślałem o pętli i wczytywaniu po jednym znaku, ale chyba nie o to chodzi w tym poleceniu. Szukałem rozwiązań do tych ćwiczeń, bo biorąc pod uwagę popularność tej książki wydaje mi się, że może jest coś takiego w internecie, ale nie znalazłem. Byłbym wdzięczny za ewentualną informację na ten temat.
Z góry dziękuję za pomoc.

1
char tab[256]; //przyda się znak końca
for(i=0;i<255;++i) { scanf("%c",tab+i); if(tab[i]=='\n') break; }
0
fgets(tab, sizeof(tab), stdin);

edit: twój tab MUSI być długości 256 bo potrzebujesz miejsce na zero kończące!
Można prościej (jak dragon zaznaczył fgets zawiera znak końca linii, natomiast gets już nie, ale nie ma kontroli długości linii - ty masz gwarancję długości linii):

char tab[256];
gets(tab);

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