Pointer auf Char zurückgeben



  • Stimmt das so? Rückgabe Pointer...

    char* fname(char *filename, char *destination){
    
    	strcpy(destination, "RAID_");
    	strcat(destination, filename); 	
    	return destination; 
    
    }
    

    main.c

    char *s1="test.txt";
    char *s2;
    
    s2=malloc(200);
    fame(s1, s2);
    puts(s1);
    free(s2);
    

    Fehler bekomme ich keinen...



  • Ja das sieht richtig aus.

    Wo genau liegt dein Problem?



  • Problem keines, wollte nur sichergehen, dass es so passt.
    "String" zurückgeben ist ja in C so ne Sache....

    Wäre eine Variante mit einem lokalen Puffer auch in Ordnung?

    char *foo(char *src, char *dst){
    
    char buffer[200];
    
    strcpy(buffer, src);
    strcat(buffer, "lalelu");
    strcpy(dst, buffer);
    
    return dst;
    

    Prinzipiell müsst ich gar nichts zurückgeben oder?

    void foo(char *src, char*dst){
    strcpy(src, dst);
    }
    


  • unsure schrieb:

    Wäre eine Variante mit einem lokalen Puffer auch in Ordnung?

    Nein! Der lokale Puffer stirbt bei Funktionsende.

    unsure schrieb:

    Prinzipiell müsst ich gar nichts zurückgeben oder?

    Stimmt.



  • unsure schrieb:

    Wäre eine Variante mit einem lokalen Puffer auch in Ordnung?
    Nein! Der lokale Puffer stirbt bei Funktionsende.

    Leuchtet ein, aber der Puffer wird ja hier vor verlassen schon in dst kopiert?

    char *foo(char *src, char *dst){
    
    char buffer[200];
    
    strcpy(buffer, src);
    strcat(buffer, "lalelu");
    strcpy(dst, buffer);
    
    return dst;
    


  • unsure schrieb:

    unsure schrieb:

    Wäre eine Variante mit einem lokalen Puffer auch in Ordnung?
    Nein! Der lokale Puffer stirbt bei Funktionsende.

    Leuchtet ein, aber der Puffer wird ja hier vor verlassen schon in dst kopiert?

    char *foo(char *src, char *dst){
     
    char buffer[200];
     
    strcpy(buffer, src);
    strcat(buffer, "lalelu");
    strcpy(dst, buffer);
     
    return dst;
    

    Ups!
    Ja, das geht dann.


Log in to reply