Ich arbeite an der Implementierung von strdup()
in C, ich bin neu in C und ich versuche, meine eigene Bibliothek zu erstellen. Ich verwende die tatsächliche strdup()
von string.h
, um meine zu testen, und ich laufe in einen Busfehler, wenn ich meine Quelle gegen ein Hauptprogramm aber keine prüfe, wenn ich den tatsächlichen strdup()
benutze. Ich kann auch keine vorhandenen Funktionen außer malloc()
verwenden.Implementierung von strdup() in C-Programmierung
Quellcode:
#include <stdlib.h>
char *ft_strdup(char *src)
{
char *str;
int len;
while (src[len])
len++;
str = (char*)malloc(sizeof(*str) * (len+1));
while (*src)
*str++ = *src++;
*str = '\0';
return (str);
}
Warum einen Busfehler ich immer noch zu bekommen?
Sie vermissen zu initialisieren 'len' mit 0 – Ctx
* I C neu bin und ich versuche, meine eigene Bibliothek * zu bauen - in der Regel keine gute Idee. Ich habe C schon viele Jahre zuvor benutzt [ich habe meine eigene Standardbibliothek erstellt] (http://pdclib.e43.eu/), und ich bin noch viele Jahre später dabei. Die '' Funktionen sind im Allgemeinen ganz einfach, aber Sie werden schnell Probleme bekommen (oder implementieren Sie die Funktionen zu naiv, so dass Sie ein frustrierend gebrochenes Projekt haben). Versuchen Sie etwas auf der Benutzerseite der Standardbibliothek für Ihre ersten Schritte. –
DevSolar
@ user3121023 Danke, wie gebe ich den Zeiger zurück an den Anfang? – adot