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

C++/C Doklejanie tablicy znakowej do drugiej

Cloud VPS
0 głosów
437 wizyt
pytanie zadane 19 grudnia 2017 w C i C++ przez belkocik Początkujący (330 p.)

Cześć. Ostatnio na zajeciach dopiero co zaczelismy robic zadanie dot. doklejania jednej tablicy znakowej do drugiej tablicy znakowej. Pomozecie jak napisac ten program? Sa od tego jakies biblioteki, ale mozna to zrobic bez uzywania ich czy cos w tym stylu? Nie mam pojecia jak to zaczac ;/ Polecicie cos do poczytania? Z gory dzieki za pomoc :)

Deklaracja: z.h

void DoklejZnaki (char*, char*)

Funkcja znak.cpp

void DoklejZnaki (char* Tablica1, char* Tablica2)
{


}

 

3 odpowiedzi

+1 głos
odpowiedź 19 grudnia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 19 grudnia 2017 przez belkocik
 
Najlepsza
W bibliotece standardowej języka C (oraz C++) istnieje funkcja strcat, która właśnie skleja dwa łańcuchy znaków. Tutaj znajdziesz informacje na ten temat: http://en.cppreference.com/w/c/string/byte/strcat

Jeśli chcesz napisać samemu taką funkcję, to musisz zatroszczyć się o to, by w pierwszym buforze (do którego chcesz dokleić znaki) wystarczyło na to pamięci - przy funkcjach tego typu należy uważać, bo może dojść do buffer overflow, co z kolei może być niebezpieczne. Możesz się przed tym zabezpieczyć ograniczając rozmiar (ile maksymalnie znaków przypiszesz do pierwszego napisu - resztę możesz zignorować).

Zapewne będziesz musiał użyć funkcji realloc: http://en.cppreference.com/w/cpp/memory/c/realloc na pierwszym wskaźniku, która zaalokuje nowy obszar z danymi (o nowym rozmiarze - takim jaki będzie Ci potrzebny, aby pomieścił oba sklejone napisy), a następnie przekopiuje dane z obecnego obszaru do tego nowego.

Jak zaimplementować taką funkcję znajdziesz tutaj - to właściwie to samo: https://stackoverflow.com/questions/2488563/strcat-implementation
+2 głosów
odpowiedź 19 grudnia 2017 przez j23 Mędrzec (195,240 p.)
void DoklejZnaki (char* Tablica1, char* Tablica2)
{
	while(*Tablica1) ++Tablica1;
	while(*Tablica1++ = *Tablica2++) {}
}

Prościej się chyba nie da...

0 głosów
odpowiedź 19 grudnia 2017 przez belkocik Początkujący (330 p.)
znak.h

void DoklejZnak(char*, const char*); // Deklaracja funkcji doklejąjącej zawartość tablicy źródłowej do tablicy docelowej, argument 1 - znacznik tablicy źródłowej, argument 2 - znacznik tablicy docelowej
znak.cpp

void DoklejZnak(char *TabDoc, const char *TabZrd)
{
	while (*TabDoc)
	{
		TabDoc++;
	}
	while (*TabDoc++ = *TabZrd++);
}
cwiczenie4.cpp

	char Tab1[50] = "Tablica 1 ";
	char Tab2[50] = "Tablica 2";

	DoklejZnak(Tab1, Tab2);

 

Mozecie mi wytlumaczyc jak dziala konkretnie ta petla while co robi po kolei, a szczegolnie  

while (*TabDoc++ = *TabZrd++);

 

Podobne pytania

0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 15 października 2017 w C i C++ przez LightInWindow Użytkownik (720 p.)
0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez roxy32l Początkujący (470 p.)
0 głosów
3 odpowiedzi 4,814 wizyt
pytanie zadane 18 marca 2016 w C i C++ przez Karoll98 Początkujący (400 p.)

93,484 zapytań

142,417 odpowiedzi

322,763 komentarzy

62,895 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

Kursy INF.02 i INF.03
...