Hasło

0

Witam. Mam problem z porównaniem 2 łańcuchów char, np:

char a[] = "r2d2", b[] = "r2d2';

if(a == b)
cout

0

Witam
jak mamy np coś takiego :
char a[3],b[3];
to a i b są adresami zerowej komórki danej tablicy , a to są 2 różne tablice , więc adresy nigdy nie będą takie same .
twój drugi algorytm bardzo mi sie spodobał :) , ale jest o wiele prostrza metoda :
funkcja
int strcmp(char a,char a)
funkcja zwraca 0 gdy łańcuch a jest równy b
wart b

aha :
#include

0

Niech zgadnę: wcześniej programowałeś w Pascalu? :)
Typowy problem. Pascal jest językiem w którym uwzględniono tak ważny element w programowaniu jak operacje na łańcuchach. Ze względu na ideę Pascala: wygodnego i elastycznego narzędzia istnieją odpowiednie operatory działające na łańcuchach, które jakby nie patrzeć są złożonymi strukturami.
W C natomiast również ze względu na ideę tego języka nie istnieją operatory do porównywania tak dużych struktur. Język ma być bliski procesorowi. Używanie funkcji strcmp stale przypomina programiście, że łańcuch jest tylko tablicą i ta prosta operacja porównania jest w rzeczywistości złożoną funkcją.
Które z tych podejść jest lepsze? Zapewne jakieś pośrednie rozwiązanie. Dzięki C programista jest zmuszony kombinować. Widząc, że to jest tylko funkcja być może wymyśli lepszą metodę i nie będzie musiał porównywać całych łańcuchów co jest dosyć długotrwałą operacją. Za Pascalem przemawia wygoda oraz to, że jednak assembler udostępnia pewne instrukcje wspomagające operacje na łańcuchach.
Inną sprawą jest to, że pascalowy string jest znacznie wydajniejszą strukturą niż null-terminated string z C. Odczyt długości łańcucha czy dopisanie elementu na koniec (o ile jest zarezerwowana odpowiednia ilość miejsca, co w przypadku pascalowego stringa lub ShortString w Delphi jest zagwarantowane zawsze) jest natychmiastowe. Porównanie zwykle również wychodzi szybciej, gdyż łańcuchy o niejednakowej długości są wychwytywane natychmiast.
W takim wypadku chyba najlepszym rozwiązaniem jest BCB, gdyż mamy tam i stringi i pchar (przy czym stringi to już klasy, więc mamy kolejny problem...)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0