• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program dopisujący wyrazy na końcu istniejącego łańcucha.

Object Storage Arubacloud
0 głosów
127 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)

Witam 

Mam zadanie o następującej treści : Napisać program, który będzie odczytywał kilkakrotnie z klawiatury wyrazy i dopisywał go na koniec jednego łańcucha.  Napisałem taki program:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(void)
{
    char str[1164];
    strcpy( str, " lancuchy" );
    strcat( str, " zostaly" );
    strcat( str, " scalonne.\n" ) ;
    printf( "%s", str);
    return (0);
}

Zastanawiam się teraz jak go przerobić , żeby był zgodny z treścią czyli wyrazy mam podawać z klawiatury i ma to wykonywać się kilkakrotnie. Wiem ,że mam użyć pętli for wykonującej się np.3 razy więc muszę sobie zadeklarować zmienną i i jako parametr do pętli podam:

for(i=0; i<=3;i++). W tym miejscu pojawia się problem nie wiem jak zapisać w pętli for funkcję str i funkcję gets()(funkcja odczytująca łańcuch znaków) , żeby to wszystko działało jak należy. Czy ktoś może mi pomóc w rozwiązaniu tego zadania?.Dodam jeszcze,że program mam napisać w języku c.Z góry dziękuję

pozdrawiam. 

1 odpowiedź

0 głosów
odpowiedź 8 stycznia 2018 przez Patrycjerz Mędrzec (192,320 p.)
Tworzysz pętlę, a w niej odczytujesz funkcją gets tekst do tablicy roboczej i dołączasz go to tablicy wynikowej za pomocą strcat. Pamiętaj o zainicjowaniu pierwszego elementu tablicy wynikowej zerem, w celu poprawnego działania strcat.

Pozostaje jeszcze kwestia, czy korzystasz z tablic statycznych czy dynamicznych. Jeśli ze statycznych, to ustalasz sobie orientacyjnie bezpieczne rozmiary obu tablic. Jeśli z dynamicznych, to kod mocno się komplikuje. Wtedy należy odczytywać dane ze strumienia wejścia znak po znaku, aż do napotkania znaku nowej linii, alokując sukcesywnie kolejne bajty tablic. Można również poprosić użytkownika o wcześniejsze podanie długości napisów, które poda z klawiatury i zaalokować pamięć z góry.
komentarz 8 stycznia 2018 przez mn130496 Gaduła (3,530 p.)
Dzięki a możesz mi jeszcze podpowiedzieć jak zainicjować pierwszy wyraz tablicy wynikowej zerem bo nie dokonca wiem jak to zrobić i wyskakują mi ciągle jakieś błędy?
komentarz 8 stycznia 2018 przez Patrycjerz Mędrzec (192,320 p.)

Jeśli twoją tablicą wynikową jest str (czyli ta, do której doklejasz kolejne napisy), to pierwszy element tablicy zerujesz następująco:

str[0] = 0;

Równoważnym zapisem jest

str[0] = '\0';

gdyż literał '\0' jest równy 0, więc można stosować obydwie linijki zamiennie.

komentarz 8 stycznia 2018 przez mn130496 Gaduła (3,530 p.)
ok dziękuję za pomoc

Podobne pytania

+1 głos
0 odpowiedzi 519 wizyt
0 głosów
1 odpowiedź 324 wizyt
0 głosów
1 odpowiedź 1,488 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...