Spájanie reťazcov – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Spájanie reťazcov – C / C++ – Fórum – Programujte.comSpájanie reťazcov – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Dodiq0
Newbie
15. 8. 2007   #1
-
0
-

Zdravím, prosím vás v tomto príklade by som chcel aby sa mi spojili reťazce, ale nejako mi to nejde..
Viem, že sa to dá cez cstring,ale chcem pochopiť princip.

#include <iostream>

#include <cstring>
using namespace std;
int main()
{
char *a=new char[2];
char *b=new char[4];
strncpy(a,"lt",2);
strncpy(b,"name",4);
int MAX=strlen(a) + strlen(b);
char *c=new char[MAX];
cout << "Pocet znakov: " << MAX <<endl;
for(int i=0;i<MAX;i++)
{
if (i<strlen(a)) c[i]=a[i];
else c[i]=b[i];
}
cout << c << endl;
cout << *(c+9);
delete []a;
delete []b;
delete []c;
return 0;
}

Nahlásit jako SPAM
IP: ...–
Beginner
Reklama
Reklama
sn3d0
Věrný člen
15. 8. 2007   #2
-
0
-

ten for je tam akísi divoky... ja osobne by som to riesil takto:



#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char *a=new char[2];
char *b=new char[4];

strncpy(a,"lt",2);
strncpy(b,"name",4);
int MAX=strlen(a) + strlen(b);
char *c=new char[MAX];
cout << "Pocet znakov: " << MAX <<endl;

memcpy(c, a, strlen(a));
memcpy(c+strlen(a), b, strlen(b));


delete []a;
delete []b;
delete []c;
return 0;
}


ked to chces cez ten tvoj for.. tak to vobec nemusis robit tak komplikovane. Snaz sa veci riesit co najjednoduchsie.Algoritmicky to mas dost chaoticke.



#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char *a=new char[2];
char *b=new char[4];
int i;

strncpy(a,"lt",2);
strncpy(b,"name",4);
int MAX=strlen(a) + strlen(b);
char *c=new char[MAX];
cout << "Pocet znakov: " << MAX <<endl;

for(i = 0; i <strlen(a); i++) {
c[i] = a[i];
}

for(i = 0; i < strlen(b); i++) {
c[strlen(a) + i] = b[i];
}

delete []a;
delete []b;
delete []c;
return 0;
}


Nahlásit jako SPAM
IP: ...–
shutdown -h now
Dodiq0
Newbie
15. 8. 2007   #3
-
0
-

To sn3d: ide to diky, len prosím ťa nevieš mi vysvetliť prečo nefungovalo to moje a stále mi prepisovalo reťazec?

Nahlásit jako SPAM
IP: ...–
Beginner
insider0
Věrný člen
15. 8. 2007   #4
-
0
-

To Dodiq:

    for(int i=0;i<MAX;i++)

{
if (i<strlen(a)) c[i]=a[i];
else c[i]=b[i];
}


kdyz se zamyslim, co to udela, tak urcite ne to, co chces :)
projed si teoreticky cyklus:
prvni prujezd - i = 0:
podminka? vyhovuje do c[0] se priradi a[0]
preskocim na treti prujezd :) i = 2;
podminka? nevyhovuje, do c[2] se vlozi b[2] - ale co to, vklada se tam az 3 znak z b...

takze uprava:
int delkaA = strlen(a),delkaB = strlen(b); // nac zatezovat procesor v kazdem pruchodu cyklem pouzitim funkce

...// v podstate to co tam mas :)
for(i=0;i<MAX;i++)
c[i] = ((i<delkaA) ? a[i]:b[(i-delkaA)]);


tech zavorek tam mozna mohlo byt min, ale ja si to radeji vzdy ozavorkuju, at se pak nedivim :)
jinak pokud neznas konstrukti s ? tak je to (bool podminka) ? pravda:nepravda
kdyz tak si pohledej na internetu

Nahlásit jako SPAM
IP: ...–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
Dodiq0
Newbie
16. 8. 2007   #5
-
0
-

To insider: Ďakujem, pomohol si.

Nahlásit jako SPAM
IP: ...–
Beginner
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 86 hostů

Podobná vlákna

While spájanie položiek — založil Anonym

Spajanie exe — založil Darkkiller

Rovnosť reťazcov — založil Grungy

Pole reťazcov — založil Tomáš

Porovnávanie reťazcov — založil Kent

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý