char *word
A alokacja pamięci gdzie?
Zapisujesz pobrane znaki do tablicy, której nie zaalokowałeś. Coś takiego może działać tylko przez przypadek.
Musisz napisać: char word[ileśtam]
(zadeklarowałeś wcześniej rozmiar buffer
na 80
, napis "Slowo+
" ma 6
znaków, więc sensowna zdaje się deklaracja char word[80-6]
)
Ewentualnie, jeśli chcesz móc zmieniać długość tablicy w trakcie działania programu, to możesz poczytać o funkcjach malloc
, calloc
, realloc
, free
... Ale to, co napisałem wyżej, to prostsze podejście.
Następne sprawy:
Jeśli chcesz pobrać od użytkownika całą linijkę tekstu, to nie ma sensu robić tego „na piechotę”, tak jak Ty to robisz. Poczytaj o funkcji fgets
.
A, i oczywiście zdajesz sobie sprawę, że pobierasz od użytkownika całą linijkę tekstu, a nie pojedyncze słowo?
Nie masz średnika po ++i
.
Źle używasz sprintf
. Funkcje tego rodzaju potrzebują mieć podane „na tacy”, gdzie mają wsadzić jakie zmienne. sprintf(buffer, "Slowo+", word)
zignoruje ciąg znaków word
i wsadzi do buffer
literalnie napis Slowo+
. Musisz napisać: sprintf(buffer, "Slowo+%s", word)
, wtedy zadziała. A najlepiej to używać snprintf
zamiast sprintf
.
sprintf
działa prawie tak samo jak printf
. Postaraj się wpierw porządnie ogarnąć printf
, to łatwo zrozumiesz snprintf
.
Tak na poważnie, to postaraj się robić powoli ale dokładnie jakiś tutorial C, bo zdaje się, że nie ogarniasz najprostszych rzeczy (bez urazy). Może najchętniej jakiś tutorial, który nie będzie korzystał z conio.h
, ale w sumie może to i bez znaczenia na razie.
Link do gotowca:
http://ideone.com/3683bd
kmphkmph