[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] gets strengen



Nu har dette været et emne i 14 dage, og jeg ved ikke helt om det har
hjulpet på det oprindelige spørgsmål (5/8). Hvor lang er en streng læst
med fx gets? Det kan funktionen "strlen" oplyse når strengen er normalt
NULL-termineret. Man kan ikke bare bruge "memcpy" uden at have
malloceret en buffer først.

Jeg ved ikke om assembler-kode er noget i har arbejdet med, men faktisk
er c ligeså reel med sine data som assembler er. Assembler laver kode af
en eller anden art i den rækkefølge det står skrevet i source-filen. Jeg
laver lige lidt data i en simuleret assembler her:

array {reserver bytes}  "12345678"   ; snupper 8 bytes på adressen
"array"
pntr  {reserver ord}    array        ; pntr er et maskinord der
indeholder
                                     ; adressen på array

"array" er altså et givet sted i memory når programmet er loadet, og det
er vel
klart at man ikke bør ændre på den. Måske vil c kunne acceptere man
laver en
&array++, men jeg tror det ikke.

Mit assembler-eksempel kunne stamme fra en c-kode der siger:

char array = "12345678";
char *pntr = array;

Her ville array bare have fået et NULL-byte i enden. "array" selv er
ikke en pointer, men en adresse på en variabel. "pntr" er en pointer,
altså en variabel
der indeholder en adresse.

Prøv i øvrigt at kigge på "strtok" til at splitte indtastede data med.

Gad vide hvad jeg har skrevet galt dennegang????
Søren H. Sørensen

Anders Melchiorsen wrote:
> 
> Sune <sslug@sslug> wrote on 18-Aug-01:
> 
> > Du har aldrig sendt det link, jeg aner da ikke hvor den faq ligger
> > henne, jeg har selv fundet 2 citater frem der støtter min sag, så
> > det kan vi jo blive ved med i en evighed.
> 
> Det kommer som første hit på Google ved søgning på "comp.lang.c faq"
> og jeg mener da bestemt at en anden også har sendt linket i denne
> diskussion.
> 
> Men jeg kan da godt finde det for dig. Der findes forskellige udgaver
> på http://www.eskimo.com/~scs/C-faq/versions.html .
> 
> > Næ, men det er jo hans mening, og den har han ret til, jeg har sendt
> > dig to andre med modsatte meninger, skal vi sige 2-1 til mig ;)
> 
> "En løgn bliver ikke sand af at blive gentaget", eller hvordan går
> mundheldet? Du finder næppe et mere troværdigt dokument end
> comp.lang.c FAQ, som tilmed henviser til relevante afsnit i lige så
> troværdige og ansete bøger.
> 
> > Hvis den kan opfattes som, anvendes som, og bruges af compileren som
> > en pointer, hvorledes begrunder du så at det IKKE er en pointer?
> 
> Der er ingen pointer. Der er kun et array. En pointer er en variabel
> som indeholder adressen på en anden variabel. En sådan variabel findes
> ikke når man laver et array. Figur i Q6.2.
> 
> Den pointer, du ser, skyldes at compileren implicit laver en pointer
> til det første element når du bruger et array i et udtryk. Så når du
> skriver "a" er det en kort og bekvem notation for "&a[0]", men det gør
> ikke a til en pointer.
> 
> > Men vi kan da godt stoppe her, jeg tror jeg har fået min pointe
> > igennem, om du så vil indrømme din bøf eller ej.
> 
> Hæ.
> 
> Anders.


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:09 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *