[C] zelfbouw cpy als vervanging voor strcat ?

Pagina: 1
Acties:

  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
Onderstaande code zou toch nooit kunnen werken ? deze neemt toch ook gewoon \0 en \n over ? en schrijft door tot hij eindigd in een segmentation fault ???

Toch lijkt het te werken! 8)7 :?

t'is nog vroeg... ik word gek!
C:
1
2
3
4
5
6
static char * copy (char * p, const char * q)
{
    while  (*p = *q)
        p++, q++;
    return p;
}

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

\0 is toch ook in C equivalent aan false?
Dan wordt dus op een gegeven moment die *p = \0 = null ~= false... -> while stopt ermee :)

\n en anderen hebben verder geen betekenis in pointer-code enzo

[ Voor 21% gewijzigd door ACM op 10-11-2003 10:26 ]


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

C:
1
2
3
4
5
static char * copy (char * p, const char * q)
{
    while  (*(p++) = *(q++));
    return p;
}
Niet zo van die lange code schrijven, joh 8)7

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
ACM schreef op 10 november 2003 @ 10:26:
\0 is toch ook in C equivalent aan false?
Dan wordt dus op een gegeven moment die *p = \0 = null ~= false... -> while stopt ermee :)
Dan ontbrak dat stukje in mijn basiskennis!! thanks!

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


Verwijderd

laat er nou de functie strcpy bestaan... en de variant strncpy...die doen precies wat je wilt.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

kenneth schreef op 10 november 2003 @ 10:44:
C:
1
2
3
4
5
static char * copy (char * p, const char * q)
{
    while  (*(p++) = *(q++));
    return p;
}
Niet zo van die lange code schrijven, joh 8)7
Die haakjes zijn trouwens niet eens nodig ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

't Moet wel leesbaar blijven natuurlijk :+

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

kenneth schreef op 10 november 2003 @ 13:00:
't Moet wel leesbaar blijven natuurlijk :+
bliep, ik realizeerde me ineens dat jouw code niet equivalent is aan die van de topicstarter. Jouw returnwaarde wijst 1 char te ver :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 13:30

BoAC

Memento mori

.oisyn schreef op 10 november 2003 @ 13:42:
[...]


bliep, ik realizeerde me ineens dat jouw code niet equivalent is aan die van de topicstarter. Jouw returnwaarde wijst 1 char te ver :P
Terwijl je waarschijnlijk wilt dat hij naar het begin van de char wijst toch?

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 17:14
Titlefix, of
C:
1
2
3
4
5
6
static char * cat(char * p, const char * q) 
{ 
    while ( *p ) ++p;
    while  (*p = *q) ++p,++q; 
    return p; 
}

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Ja wat die strcat in de titel deed vroeg ik me straks ook al af 7(8)7

Kan xychix dat even toelichten? ;)

Professionele website nodig?


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

MSalters schreef op 10 november 2003 @ 15:22:
Titlefix, of
C:
1
2
3
4
5
6
static char * cat(char * p, const char * q) 
{ 
    while ( *p ) ++p;
    while  (*p = *q) ++p,++q; 
    return p; 
}
En wat moet deze code doen? Coredumpen ofzo :? :+
Bedoel je niet zoiets:
C:
1
2
3
4
5
6
static char * cat(char * p, const char * q) 
{ 
    while ( *p ) ++p, ++q;
    while  (*p = *q) --p, --q; 
    return p; 
}

Dan nog zou ik het gewoon van begin tot eind doen, en een tijdelijke *s die je dan retourneert. Beter dan twee keer itereren.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

kenneth :? :? :?
cat (p, q) concateneert q aan p. Je moet dus eerst het eind van p opzoeken, en daarna kun je q daarnaartoe kopieren

En dan retourneer je het einde, zodat er voor de volgende cat niet opnieuw het einde gezocht hoeft te worden

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

7(8)7

* kenneth zoekt maar een klein donker hoekje op :z

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

kenneth schreef op 10 november 2003 @ 15:46:
[...]
En wat moet deze code doen? Coredumpen ofzo :? :+
Nog afgezien van wat oisyn zegt zal jouw code harder coredumpen dan die van MSalters, ik weet niet wat voor onkosher spul je met die q-pointer doet van jou maar eng is het wel :P

Professionele website nodig?


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Hoezo? Hij vult 'm toch gewoon achteruit? Dan zou het toch even eng zijn als je het vooruit doet :?

Sorry, rotzooien met pointers doe ik al jaren niet meer :) Misschien moet ik maar gewoon m'n code testen :)

edit: laat maar, het is ranzig, idd 8)7 daarbij gaat het nooit werken :Y)

* kenneth kruipt terug naar Java

[ Voor 28% gewijzigd door kenneth op 10-11-2003 16:16 ]

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.

Pagina: 1