Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » strncat() marke eigenbau

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
18.03.2004, 21:21 Uhr
~roadrunner
Gast


kk
ein blutiger anfänger braucht mal dringend eure hilfe:
ich brauche ein ganz einfaches kleines schnuckliges program welches genau das macht was die funktion strncat() macht.
meint ihr kriegt das hin? bestimmt !
vielen dank im vorraus!

mfg
roadrunner
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.03.2004, 21:46 Uhr
Pablo
Supertux
(Operator)


Meiner Meinung nach sollte es so aussehen:


C++:
#include <stdio.h>
#include <string.h>

char* mystrncat(char *dest, const char *src, size_t n)
{
    char* tmp;
    int i;
    if (!dest || !src || !n) return dest=NULL;
    tmp=&dest[strlen(dest)];
    for (i=0; i<n; ++i)
        tmp[i]=src[i];

    tmp[i]=0;

    return dest;

}

int main()
{
    char a[10], b[10];
    strcpy(a, "Hallo, ");
    strcpy(b, "Welt!");
    mystrncat(a, b, 1);
    printf("%s\n", a);
    return 0;
}




Ausgabe: Hallo, W

Und hat auch (wie strcat) Probleme, wenn dest oder src keine 0-basierende Strings sind. Ich habe getestet und hat funktioniert. Da du gesgat hast, dasselbe tut, habe ich auch die selben Fehler gewählt, d.h. wenn src zu klein ist und so, wirst du auch Segmentation Fault kriegen


Bearbeitung von Pablo:

Wozu willst du das wissen? Neugier oder Hausaufgabe?


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 18.03.2004 um 21:50 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.03.2004, 21:49 Uhr
~roadrunner
Gast


vieeelen dank!!! hast mir echt geholfen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.03.2004, 21:50 Uhr
Pablo
Supertux
(Operator)


Wozu/warum willst du das wissen? Neugier oder Hausaufgabe?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 18.03.2004 um 21:51 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.03.2004, 22:17 Uhr
~roadrunnner
Gast


letzteres
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.03.2004, 22:35 Uhr
Pablo
Supertux
(Operator)


Das finde ich nicht lustig. Schließlich sind wir ein Programmierforum und kein Hausaufgabe-Service! -->

Bitte, sich an den Regeln des Forums halten!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 18.03.2004 um 22:37 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.03.2004, 23:16 Uhr
Pablo
Supertux
(Operator)


Hab von Windalf folgendes per PM bekommen


Zitat:
Windalf schrieb :
da du den thread schon geschlossen hast....

hab deine version mal ein bisschen performanceoptimiert

C++:
char* mystrncat(char *dest, const char *src, size_t n)
{
    if (!dest || !src || !n) return dest=NULL; //fraglich ob man bei n==0 und src=NULL wirklich NULL zurückliefern will...
    for (char*tmp=dest+strlen(dest);--n+1&&*src;++tmp,++src)
        *tmp=*src;
    *tmp=0;
    return dest;
}



--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.03.2004, 10:00 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich habe den Thread mal wieder geöffnet, weil es eh schon recht sinnlos war ihn zu schliessen (durch bereits gemachte Hausaufgaben ist das Kind ja eh in den Brunnen gefallen).
Bei n==0 sollte ebenfalls dest zurückgegeben werden. bei !dest oder !src darf man auch abstürzen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.03.2004, 10:14 Uhr
Pablo
Supertux
(Operator)


Heisst das, dass strncat nicht auf !src und !dest prüft?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.03.2004, 10:50 Uhr
virtual
Sexiest Bit alive
(Operator)


Ist nicht gefordert.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: