🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #911

Re: Problemy z funkcja 'strcat' i Lvalue required (ZGROZA)

#911
From: dpilarcz
Date: Wed, 28 Jan 1998 11:49
63 lines
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.pl
References: <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