Vad ska jag göra för att lösa problemet ?
Jag får bara ändra min dstring.c fil och jag undrar vad ska jag göra för att koden ska fungera ?.
Vad har du gjort tills nu? Har du gjort någon av dessa funktioner?
Börjar med att göra test programmet, t.ex. i main(), includera denna header fil.
Sen ropa funktionerna och parallelt lägg till implementationen i in en dstring.c-fil
Jag löste det problemet och nu undrar jag vad ska jag göra för att programmet ska fungera ?.
&str ger dig adressen till str, är det verkligen det du vill använda i din malloc?
Vidare, såvida du inte försöker kompilera med en C++ compiler så ska du inte casta void* som malloc returnerar.
Din assert är inte sann eftersom du skapar en char* som endast är null-terminerad, dvs, den behandlas som om du hade skrivit char* str = NULL;
Dracaena skrev:&str ger dig adressen till str, är det verkligen det du vill använda i din malloc?
Vidare, såvida du inte försöker kompilera med en C++ compiler så ska du inte casta void* som malloc returnerar.
Din assert är inte sann eftersom du skapar en char* som endast är null-terminerad, dvs, den behandlas som om du hade skrivit char* str = NULL;
Jag fortsätter att skriva imorgon
assert använder man för att kolla programmeringsfel dvs t.ex. denna
funktion förväntar sig en sträng, men jag skickade in något annat.
man skall inte använda assert för att kolla retur värden
från runtime funktioner, istället skall du ha if () och sen
när du returnerar newStr så skall anroparen i sin tur kolla retur värdet
av dstring_initialize
för att vara säker på att det gick bra.
DString dstring_initialize(const char* str)
{
assert( str != NULL );
DString newStr = malloc(strlen(str) + 1); // sizeof(char) är onödigt, det blir 1
if (newStr != NULL)
{
strcpy(newStr, str);
}
return newStr;
}