[ RMAN @ 17.05.2006. 17:57 ] @
Da li mozete da mi objasnite na najosnovnijem primeru?
[ NrmMyth @ 17.05.2006. 18:04 ] @
Linearno.
Prolazi kroz oba niza dok ne dodje do razlicitog znaka ili kraja,
ako su razliciti znaci usporedjuje ih i vraca rezultat usporedbe,
ako je kraj niza onda vraca da su isti.
[ itf @ 17.05.2006. 18:16 ] @
Ovdje treba oprezan. Koliko sam upoznat, postoje razlike pri radu sa stringovnim funkcijama u ovisnosti o tome da li radite u Visual Studiu ili Borlandu. Primjerice, baš kod funkcije strcmp ona će vratiti 0 ili 1 (bool) u VS-u u ovisnosti o tome da li su nizovi isti ili se razlikuju, a ukoliko radite na Borlandu, strcmp će vratiti baš razliku ASCII vrijednosti prvih dvaju znakova zbog kojeg su nizovi različiti.

Uglavnom, funkcija vraća 0 ukoliko su nizovi isti bez obzira na razvojno okruženje.

[Ovu poruku je menjao itf dana 17.05.2006. u 19:18 GMT+1]
[ RMAN @ 17.05.2006. 18:53 ] @
Pa dajte mi neki primer (za borland). Znam i ja teoriju,treba da vidim u zadatku.
[ X Files @ 17.05.2006. 19:08 ] @
Citat:

Pa dajte mi neki primer (za borland).

Koji Borlandov alat koristis?
Koliko se secam svaki Borlandov Help je bio sa obiljem primera, pa bi trebao da znas da ga koristis...

Citat:

Znam i ja teoriju,treba da vidim u zadatku.


Ovo je iz Borlandovog Helpa / C Runtime Library:
(izjavu o 'poznavanju' teorije necu da komentarisem)

Code:

#include <string.h>
#include <stdio.h>

int main(void)
{
   char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
   int ptr;

   ptr = strcmp(buf2, buf1);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 1\n");
   else
      printf("buffer 2 is less than buffer 1\n");

   ptr = strcmp(buf2, buf3);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 3\n");
   else
      printf("buffer 2 is less than buffer 3\n");

   return 0;
}


P.S. Tema ce biti ovde jos koji sat, a posle toga ide u C++ za pocetnike...



[Ovu poruku je menjao X Files dana 17.05.2006. u 20:09 GMT+1]
[ NrmMyth @ 17.05.2006. 21:33 ] @
Citat:
itf: Ovdje treba oprezan. Koliko sam upoznat, postoje razlike pri radu sa stringovnim funkcijama u ovisnosti o tome da li radite u Visual Studiu ili Borlandu. Primjerice, baš kod funkcije strcmp ona će vratiti 0 ili 1 (bool) u VS-u u ovisnosti o tome da li su nizovi isti ili se razlikuju, a ukoliko radite na Borlandu, strcmp će vratiti baš razliku ASCII vrijednosti prvih dvaju znakova zbog kojeg su nizovi različiti.

Uglavnom, funkcija vraća 0 ukoliko su nizovi isti bez obzira na razvojno okruženje.

[Ovu poruku je menjao itf dana 17.05.2006. u 19:18 GMT+1]

To je tako nebitno... i netocno.

Standard propisuje da strcmp vraca:
a < 0 - ako je prvi manji od drugog
a == 0 - ako su jednaki
a > 0 - ako prvi veci od drugoga

Sad hoce li on vratiti 1 ili razliku znakova je totalno nebitno jer je i jedno i drugo kod ispravne provjere sa {>, <} tocna povratna vrijednost.
Inace, MSC++ 7.0 vraca ispravnu vrijednost i postuje standard.

Pozdrav.
[ Mali Misha @ 17.05.2006. 21:54 ] @
Citat:
NrmMyth:
a < 0 - ako je prvi manji od drugog
a == 0 - ako su jednaki
a > 0 - ako prvi veci od drugoga

Zapravo vrednosti bi trebale da budu -1, 0 i 1. Dakle signum razlike prvih znakova po kojima se stringovi razlikuju.

*edit
Code:
int sc(const char*a,const char*b)
{
    int res;
    
    while(*a==*b&&*a&&*b) a++,b++;

    res = *a - *b;

    return res<0?-1:!!res;
}


[Ovu poruku je menjao Mali Misha dana 17.05.2006. u 22:57 GMT+1]
[ DjoleReject @ 18.05.2006. 10:20 ] @

-1, 0, 1 bez obzira na okruzenje, to je C++ standard, a svako ko napravi prevodilac koji vraca nesto drugo - ne moze da se nazove C++om. U starijim verzijama su moguce razlike...
[ NrmMyth @ 18.05.2006. 15:25 ] @
Citat:
Mali Misha: Zapravo vrednosti bi trebale da budu -1, 0 i 1. Dakle signum razlike prvih znakova po kojima se stringovi razlikuju.

http://www.cppreference.com/stdstring/strcmp.html
http://www.elook.org/programming/c/strcmp.html
http://www.eecs.tufts.edu/comp/15/cref/cref.html

Tko sad grijesi??
[ Mali Misha @ 18.05.2006. 18:55 ] @
Ko gresi? Onaj ko nije postavio pitanje "Ko je sad u pravu?". :)

Da objasnim: Naravno, po standardu se na kraj strcmp signum ne mora staviti. No pred postavljanje pitanja gore je autor trebao da uzme u obzir i uoptrebu konjuktiva (potentialis) u mom postu koji se u najgoru ruku moze shvatiti kao licno misljenje, premda je isto u stvari "uslovno tacno".

U svakom slucaju, izvinjavam se citaocima zbog davanja prednosti konkretizaciji a ne uopstenjima. :)
[ NrmMyth @ 18.05.2006. 19:52 ] @
Eto ti ga djavle... filozofija...