2017-10-03 2 views
0

Ich möchte Folgendes tun, übergeben Sie eine Zeichenfolge als Funktion Argument und die Funktion wird eine Zeichenfolge zurück zu Main. Die kurze Idee ist wie folgt:String als Funktionsargument und Rückgabe String aus Funktion in C

String str1 = "Hello "; 
String received = function(str1); 
printf("%s", str3); 


String function (String data){ 
    String str2 = "there"; 
    String str3 = strcat(str3, str1);    
    String str3 = strcat(str3, str2);   //str3 = Hello there 
    return str3; 
} 

Wie übersetze ich diese Idee zu C? Vielen Dank.

+0

Sie sollten etwa lesen [strcat] (https://www.tutorialspoint.com/c_standard_library/c_function_strcat.htm) –

+0

Ja, ich verstehe die Verkettung Teil. Ich brauche Hilfe beim Übergeben der Zeichenfolge als Funktionsargument sowie das Zurückgeben einer Zeichenfolge von Funktion zu Haupt. Vielen Dank. –

Antwort

1

Strings oder Zeichen-Arrays im Grunde ein Zeiger auf einen Speicherplatz sind, wie Sie vielleicht schon wissen, . Wenn Sie also einen String von der Funktion zurückgeben, wird im Grunde der Zeiger an den Anfang des Zeichenarrays zurückgegeben, der im Stringnamen selbst gespeichert wird.

Aber Vorsicht, Sie sollten niemals die Speicheradresse einer lokalen Funktionsvariablen übergeben. Der Zugriff auf diese Art von Speicher kann zu Undefined Behaviour führen.

#include <stdio.h> 
#include <string.h> 

#define SIZE 100 

char *function(char aStr[]) { 
    char aLocalStr[SIZE] = "there! "; 
    strcat(aStr, aLocalStr); 
    return aStr; 
} 


int main() { 
    char aStr[SIZE] = "Hello "; 
    char *pReceived; 
    pReceived = function(aStr); 
    printf("%s\n", pReceived); 
    return 0; 
} 

Ich hoffe, das hilft.

+0

Hallo, es funktioniert. Vielen Dank! –

0

Vielleicht möchten Sie sehen, wie richtig Strings in C

How do I concatenate const/literal strings in C?

Diese

helfen kann verketten zu
+0

Ich verstehe den Verkettungsteil. Ich brauche Hilfe beim Übergeben der Zeichenfolge als Funktionsargument sowie das Zurückgeben einer Zeichenfolge von Funktion zu Haupt. Vielen Dank. –

+0

Verwenden Sie den Zeiger auf die Zeichenfolge. Das wird ein Zeichenzeiger sein. – Lordtien

0

Sie können dies versuchen:

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

char * function(char * data); 

char * function(char * data) 
{ 
    char * str2 = "there"; 

    char * str3 = NULL; 

    if (data == NULL) 
      return NULL; 

    int len = strlen (data) + strlen (str2); 

    str3 = (char *) malloc (len + 1); 

    snprintf (str3, (len+1), "%s%s", data, str2); 

    return str3; 
} 

int main() 
{ 
    char * str1 = "Hello "; 

    char * received = function(str1); 

    if (received != NULL) 
      printf("%s\n", received); 
    else 
      printf ("received NULL\n"); 

    if (received != NULL) 
     free (received); 

    return 0; 
} 
Verwandte Themen