übergeben Sie Zeichenfolgen, die durch Verweis in C

Ich habe Probleme, herauszufinden, wie übergeben Sie Zeichenfolgen zurück, die durch die Parameter einer Funktion. Ich bin neu in die Programmierung, also ich kann mir vorstellen das dies wahrscheinlich eine Anfänger-Frage. Jede Hilfe Sie ihm geben könnte wäre sehr dankbar. Dieser code seg-Fehler, und ich bin mir nicht sicher, warum, aber ich bin Angabe meine code zu zeigen, was ich habe, so weit.

Ich habe ein community-wiki, so fühlen sich frei zu Bearbeiten.

P. S. Dies ist nicht Hausaufgaben.

Dies ist die ursprüngliche version

#include <stdio.h>

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

void
fn(char *baz, char *foo, char *bar)
{
     char *pch;

     /* this is the part I'm having trouble with */

     pch = strtok (baz, ":");
     foo = malloc(strlen(pch));
     strcpy(foo, pch);

     pch = strtok (NULL, ":");
     bar = malloc(strlen(pch));
     strcpy(bar, pch);

     return;
}

int
main(void)
{
     char *mybaz, *myfoo, *mybar;

     mybaz = "hello:world";

     fn(mybaz, myfoo, mybar);

     fprintf(stderr, "%s %s", myfoo, mybar);
}

UPDATE Hier ist eine aktualisierte version mit einigen der Vorschläge umgesetzt:

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

#define MAXLINE         1024

void
fn(char *baz, char **foo, char **bar)
{
     char line[MAXLINE];
     char *pch;

     strcpy(line, baz);

     pch = strtok (line, ":");
     *foo = (char *)malloc(strlen(pch)+1);
     (*foo)[strlen(pch)] = '\n';
     strcpy(*foo, pch);

     pch = strtok (NULL, ":");
     *bar = (char *)malloc(strlen(pch)+1);
     (*bar)[strlen(pch)] = '\n';
     strcpy(*bar, pch);

     return;
}

int
main(void)
{
     char *mybaz, *myfoo, *mybar;

     mybaz = "hello:world";

     fn(mybaz, &myfoo, &mybar);

     fprintf(stderr, "%s %s", myfoo, mybar);

     free(myfoo);
     free(mybar);
}
  • für Ihre strtok segmentation Fault Blick auf meine Anregung unten
Schreibe einen Kommentar