Article View: pl.comp.lang.c
Article #581Re: Lvalue required
From: Jarek Kucypera
Date: Thu, 08 Jan 1998 14:35
Date: Thu, 08 Jan 1998 14:35
40 lines
1673 bytes
1673 bytes
Tomasz Cichacki <hermes@venus.wmid.edu.pl> napisał(a) w artykule
> Gdzie jest blad?
> typedef struct dane
> {
> char ind[5];
> char imie[20];
> };
> dane d1;
>
> //***************************
> // zapis danych do pliku
> //***************************
>
> void main(void)
> {
> char x[5] = "abcd"; // - Lvalue required
> d1.ind = x;
> };
Błąd w tym, że w C(++) NIE MOŻNA stosować operatora podstawienia "=" do
całych tablic, więc także do stringów, które są tablicami znaków.
Do operacji na stringach służą funkcje zadeklarowane w pliku
nagłówkowym <string.h>.
Funckję main() można poprawić na dwa sposoby:
1)
main() {
char x[5] = {'a','b','c','d','\0'}; /* W C(++) MOŻNA inicjować tablice w momencie deklaracji */
strcpy(d1.ind,x); }
2)
main() { char x[5]; strcpy(x,"abcd"); strcpy(d1.ind,x); }
Postawienie, jak u Ciebie, po prawej stronie operatora "=" tablicy,
powoduje przekazanie ADRESU PIERWSZEGO ELEMENTU tej tablicy,
a więc w tym wypadku wskaźnika typu (char *).
Technical Details
Message-ID:
<01bd1c42$76482220$2701070a@jark.insert.igo.wroc.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!gate-inet.insert.igo.wroc.pl!newsReferences:
<690be3$rs8$3@sunsite.icm.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!gate-inet.insert.igo.wroc.pl!news From: "Jarek Kucypera" <jark@insert.com.pl> Newsgroups: pl.comp.lang.c Subject: Re: Lvalue required Date: 8 Jan 1998 14:35:29 GMT Organization: InsERT Lines: 43 Distribution: world Message-ID: <01bd1c42$76482220$2701070a@jark.insert.igo.wroc.pl> References: <690be3$rs8$3@sunsite.icm.edu.pl> NNTP-Posting-Host: r1-inet.insert.igo.wroc.pl Mime-Version: 1.0 X-Newsreader: Microsoft Internet News 4.70.1161 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit