Frage zur Rückgabe eines Zeigers
-
Hallo,
ich habe eine Frage zu der Rückgabe von char Pointer. Der untere Code wäre ziemlich tödlich, nech?char* foo() { char test[50]="test123"; ... return test; }
Was ist Best Practice? In der Methode foo ein dynamischen Speicher mittels malloc anlegen und den zurückgeben? Würde eine schnelle Variante bevorzugen.
Oder so?
#include <stdio.h> #include <string.h> void foo(char* array, const int length) { //Habe einfachhalber length nicht beruechsichtigt strcpy(array,"test123"); } int main() { const int LENGTH=255; char s[LENGTH]; foo(s,LENGTH); printf("%s",s); }
-
@asd1 oder so!
-
const int
ist sinnfrei, weil es Falsches suggeriert.
Es ist sinnfrei, eine Stringkonstante innerhalb der Funktion so zu verwenden wie du es zeigst.#include <stdio.h> #include <string.h> char *foo(char *string,int length,const char *new) { sprintf(string,"%.*s",length,new); return string; } int main() { const char *s=foo((char[255]){0},255,"test123"); puts(s); return 0; }
-
@Wutz sagte in Frage zur Rückgabe eines Zeigers:
const int
ist sinnfrei, weil es Falsches suggeriert.
Es ist sinnfrei, eine Stringkonstante innerhalb der Funktion so zu verwenden wie du es zeigst.#include <stdio.h> #include <string.h> char *foo(char *string,int length,const char *new) { sprintf(string,"%.*s",length,new); return string; } int main() { const char *s=foo((char[255]){0},255,"test123"); puts(s); return 0; }
Und das ist in C Best-Practice? Finde ich ehrlich gesagt fast noch verwirrender als die Variante des TE...