KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm having trouble figuring out how to pass strings back through the parameters of a function. I'm new to programming, so I imagine this this probably a beginner question. Any help you could give would be most appreciated. This code seg faults, and I'm not sure why, but I'm providing my code to show what I have so far. I have made this a community wiki, so feel free to edit. P.S. This is not homework. This is the original 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 Here's an updated version with some of the suggestions implemented: #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); }
Tags (comma-separated)
Save Edits
Cancel