#include <stdio.h>
char strA[80] = "A string to be used for demonstration purposes";
char strB[80];
char *my_strcpy(char *destination, char *source)
{
char *p = destination;
while (*source != '\0')
{
*p++ = *source++;
}
*p = '\0';
return destination;
}
int main(void)
{
my_strcpy(strB, strA);
puts(strB);
}
so ist meine Frage hier, dass, wenn ich den Teil herausnehmen: // * p = '\ 0';
es druckt die exakt gleiche Antwort, also warum ist das notwendig? Nach meinem Verständnis ist \ 0 ein Nul-Teil des Speichers nach einer Zeichenkette, aber da das Array strA bereits den Nul-Teil enthält, da es in "" ist, ist es wirklich notwendig?C++ Zeiger zu Arrays
Sie müssen den Nullabschluss am Ende setzen, sonst wird der Puffer überlaufen. Versuchen Sie, die Zeichenfolge zurück zu kopieren, ohne "* p = '\ 0'" zu setzen. –
Stellen Sie sich vor, Sie schreiben 'puts'. Wie würdest du es ohne den Nullabschluss machen? (Und nicht über eine andere Konvention, die C nicht verwendet) – chris
Obwohl strA '\ 0' enthält, kopieren Sie es nicht davon, da Ihre Schleife bei diesem Zeichen stoppt (while (* source! = '\ 0')). – sajas