Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Spajanje dva stringa

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Spajanje dva stringa

[ Pregleda: 2319 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

R A V E N
Mirza Beglerović Raven
Tuzla

Član broj: 36142
Poruke: 1629
89.146.162.209

Sajt: NietzscheSource.Org


+101 Profil

icon [Zadatak] Spajanje dva stringa24.08.2007. u 08:27 - pre 204 meseci
E ovako - dat je slijedeći zadatak:

Napisati program koji spaja dva stringa.Npr. ako je prvi string "Argentina" a drugi "Andora" rezultat treba biti "ArgentinaAndora".Spajanje realizovati preko funkcije koja prima pokazivače na oba stringa a vraća pokazivač na rezultujući string.

Ja sam radio ovako:

Code:
#include <stdio.h>

char string1[100],string2[100];
char *spoji_stringove(char *s1,char *s2);
char *pok1,*pok2,*pok3;
main()
{
      pok1=string1;
      pok2=string2;
      pok3=string1;
      
      printf("Unijeti string 1:");
      gets(pok1);
      printf("Unijeti string 2:");
      gets(pok2);
      
      printf("Rezultat je:%s",spoji_stringove(pok1,pok2));

     printf("\n");
     system("PAUSE");
}
char *spoji_stringove(char *s1,char *s2)
{
     while(*pok1!='\0')
           *pok1++;
      pok2=pok1;

     return pok3;
}


Ali jedino što dobijem je

Code:
Rezultat je Argentina


dakle uopšte ne registruje drugi string!U čemu je problem?

Hvala svima koji pogledaju ovo!
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4903
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+639 Profil

icon Re: [Zadatak] Spajanje dva stringa24.08.2007. u 10:07 - pre 204 meseci
Dakle, tebi treba implementacija standardne strcat() funkcije.

U tom slučaju: Google: "strcat implementation"

http://en.wikipedia.org/wiki/Strcat
http://discuss.joelonsoftware....ault.asp?interview.11.342614.6
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4903
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+639 Profil

icon Re: [Zadatak] Spajanje dva stringa24.08.2007. u 11:42 - pre 204 meseci
A inače, ceo ovaj deo:
Code:

char *spoji_stringove(char *s1,char *s2)
{
     /*1*/
     while(*pok1!='\0')
          *pok1++;

     /*2*/
     pok2=pok1;

     /*3*/
     return pok3;
}

... je jako loš:

1. while(*pok1!='\0') *pok1++;
Ovde uvećavaš VREDNOST pok1, a cilj je uvećanje ADRESE. Dakle, treba bez zvezdice:
while(*pok1 != '\0') pok1++;
...ili samo:
while( *pok1 ) pok1++;

2. pok2=pok1;
Ovde se nije desilo kopiranje, kao što si verovatno hteo. Treba otprilike ovako:
while( *pok1++ = *pok2++ );

3. u sklopu funkcije 'pominješ' pok3 koga nema u funkciji, dakle pok3 mora biti globalan, a time ti je i dizajn loš. Treba onda ovako (poslednja linija):
return --pok1;

I tek sad videh, koristio si:
char *s1,char *s2
... kao argumente funkcije, a pristupaš pok1 i pok2. Znači, u telu f-je umesto pok1 stavljaj s1, a umesto pok2 stavljaj s2.

 
Odgovor na temu

R A V E N
Mirza Beglerović Raven
Tuzla

Član broj: 36142
Poruke: 1629
SE400.PPPoE-351.sa.bih.net.ba.

Sajt: NietzscheSource.Org


+101 Profil

icon Re: [Zadatak] Spajanje dva stringa24.08.2007. u 12:37 - pre 204 meseci
pok3 je deklariran i inicijaliziran zajedno sa pok1 i pok2.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4903
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+639 Profil

icon Re: [Zadatak] Spajanje dva stringa24.08.2007. u 12:46 - pre 204 meseci
Nisi me razumeo...
Kada projektuješ tu funkciju ("Spajanje realizovati preko funkcije koja prima pokazivače na oba stringa a vraća pokazivač na rezultujući string."), onda se polazi od pretpostavke da ta funkcija bez izmena (engl: "as is") može da se upotrebi i drugde za spajanje, a ne samo u kontekstu tvog programa. Drugim rečima, ta funkcija mora biti univerzalna i nezavisna od ostatka koda. A ti si je opteretio sa pok3, a greškom si umesto s1 i s2 koristio pok1 i pok2 unutar tela funkcije.

Na linkovima koje sam ti ostavio, imaš nekoliko impmentacija tog spajanja, tvoje je samo da se opredeliš koju ćeš uzeti.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4903
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+639 Profil

icon Re: [Zadatak] Spajanje dva stringa24.08.2007. u 13:02 - pre 204 meseci
Code:

char * spoji_stringove( char* s1, char* s2 )
{
  char *tmp = s1;
  while( *s1 ) s1++;
  while( *s1++ = *s2++ );
  return tmp;
}

ili
Code:

// wiki
char * spoji_stringove(char *dest, const char *src)
  {
    const char *p;
    char *q;

    for (q = dest; *q != '\0'; q++)
       ;

    for(p = src; *p != '\0'; p++, q++)
       *q = *p;

    *q = '\0';

    return dest;
  }
 
Odgovor na temu

R A V E N
Mirza Beglerović Raven
Tuzla

Član broj: 36142
Poruke: 1629
SE400.PPPoE-3982.sa.bih.net.ba.

Sajt: NietzscheSource.Org


+101 Profil

icon Re: [Zadatak] Spajanje dva stringa07.09.2007. u 20:27 - pre 203 meseci
Da,razumijem to za funkciju.Ja sam zapravo namjeravao da pokazivač prvog niza dovedem da pokazuje na terminacioni karakter tog niza(dakle,karakter '/0'),pa da ga onda preusmjerim da umjesto na taj karakter pokazuje na prvi karakter drugog niza,ali kao što vidim,previše liberalno sam shvatio te pokazivače.

Uglavnom,zašto si gore stavio
Code:
--pok1
?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4903
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+639 Profil

icon Re: [Zadatak] Spajanje dva stringa07.09.2007. u 20:46 - pre 203 meseci
To je moja omaška.

Primeri koji verujem da rade su ovi iznad.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Spajanje dva stringa

[ Pregleda: 2319 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.