Article View: pl.comp.lang.c
Article #911Re: Problemy z funkcja 'strcat' i Lvalue required (ZGROZA)
From: dpilarcz
Date: Wed, 28 Jan 1998 11:49
Date: Wed, 28 Jan 1998 11:49
63 lines
2480 bytes
2480 bytes
> funkcja strcat tylko laczy dwa lancuchy znakow. Miejsce w pamieci musisz
> zajac sam.
> musi byc tak:
>
> > char *a="ala",*b="burek",*c="domek",*d;
> > nastepnie wykonuje nastepujacy ruch:
> d = new char[ strlen(a) + strlen(b) + 1 ] // zajecie miejsca w pamieci
na
> polaczenie lancuchow
> i wtedy
> > d=strcat(b,a);
Rany Boskie! Toz to nie ma prawa dzialac (mowie o linijce powyzej). Powinno
byc tak:
strcat(strcpy(d, b), a);
lub (jesli ktos woli pisac rozwlekle)
strcpy(d, b);
strcat(d, a);
A jesli ktos ceni lakonicznosc to moze wszystko zrobic w jednej linijce:
char *d = strcat(strcpy(new char[strlen(a)+strlen(b)+1], b), a);
pod warunkiem, ze new bedzie zglaszalo wyjatek, kiedy nie moze zallokowac
pamieci (nie
pamietam, czy wszystkie kompiatory to umozliwiaja...)
LUDZIE! UWAZAJCIE, CO PISZECIE.
W innym liscie znalazlem
> String "abcd" zajmuje w pamieci 5 (Slownie 5 ZNAKOW!!!). Tak tez string
> "abcd " zajmie ich szesc.
Po 132 krotnym powtorzeniu tego rozumowania dochodzimy do genialnego
odkrycia, ze
string "abcd" zajmuje w pamieci 137 bajtow :->.
Jesli ktos ma watpliwosci wyjasniam
string "abcd" zajmuje w pamieci 5 (slownie PIEC) bajtow. Ni mniej, ni
wiecej.
Tablice mozna wiec inicjalizowac
char tekst[5] = "abcd";
ale standard ANSI C dopuszcza taka inicjalizacje tylko dla zmiennych
globalnych
i statycznych. Niektore kompilatory pozwalaja na inicjalizacje tablic
lokalnych
(automatycznych), ale nie wszystkie.
Przy okazji: lepiej jest pisac
char tekst[] = "abcd";
Wtedy kompilator sam policzy, jaki powinien byc rozmiar tablicy i jest
gwarancja,
ze zrobi to DOBRZE. Nie pomyli mu sie piatka z szostka
Pozdrawiam, Darek
email:
--
dpilarcz@elbacsb.com.pl
Technical Details
Message-ID:
<01bd2be3$018c89c0$4a03000a@dpilarcz.elba.com.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.tpnet.pl!r2d2.elba.com.plReferences:
<Pine.GSO.3.96.980124181133.9765A-100000@delta.ds2.pg.gda.pl> <01bd2477$5e4c2a80$66465194@omk.il.pw.edu.pl>Show Full Headers
Complete Article Headers
From: "dpilarcz" <dpilarcz@elbacsb.com.pl> Subject: Re: Problemy z funkcja 'strcat' i Lvalue required (ZGROZA) Newsgroups: pl.comp.lang.c References: <Pine.GSO.3.96.980124181133.9765A-100000@delta.ds2.pg.gda.pl> <01bd2477$5e4c2a80$66465194@omk.il.pw.edu.pl> Organization: ELBA CSB SA Message-ID: <01bd2be3$018c89c0$4a03000a@dpilarcz.elba.com.pl> X-Newsreader: Microsoft Internet News 4.70.1161 NNTP-Posting-Host: r2d2.elba.com.pl Date: 28 Jan 98 11:49:44 GMT Lines: 63 Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.tpnet.pl!r2d2.elba.com.pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit