Dodawanie wprowadzonego przez uzytkownika slowa do innego.

0

Wiem ze to bardzo podstawowe pytanie, ale zapomnialem, czytalem o sprintf'ie ale nie wiem, mam slowo, i do niego potem chce dodac podane przez uzytkownika slowo w programie, probuje cos takiego ale mysle ze to malo eleganckie...

  char buffer[80];
  char ch,*word;
  int i=0;
  
  while((ch = getch()) != ENTER){
    word[i] = ch;
    ++i
      }
  sprintf (buffer, "Slowo+", word);

W sumie tez nie zabardzo wiem jak zaalokowac pamiec dla tablicy "word", no i jak dodac do tego slowa, tak zeby do tego z nawiasu "Slowo+" od razu za, bylo dodane te slowo ktore poda uzytkownik, tez chyba koslawo pobieram input, ale nie wiem jak moglbym to zrobic lepsza metoda.

0
 word[i] = ch;

Przypisujesz do nieprzydzielonej pamięci... Czuję tu BUM

0

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

0

nie wchodze na ideone.com
sam napisalem jedna funkcje, jesli cos byscie w niej poprawili to piszcie

char *receiveInput(){
  char *s = malloc(100 * sizeof(char));
  scanf("%99s", s);
  return s;
}

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