Crossfire wrote:
So would I. If I was trying to implement the original arrangement properly, I'd probably do it something like this... ---BEGIN--- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <getopt.h> #include <libintl.h> #define _(x) gettext(x) #define VERSION "0.1" void somefunction(char *strout, int n) { strncpy(strout, _("some words"), n); strout[n-1]='\0'; } void usage(int argc, char *argv[]) { fprintf(stderr,_("%s: do stuff\n\n"), argv[0]); fprintf(stderr,_("usage:\n %s [<flags>]\n\n"), argv[0]); fprintf(stderr,_("valid flags:\n")); fprintf(stderr,_(" -h, --help display this message\n")); fprintf(stderr,_(" -v, --version display the version number\n")); exit(1); } void version(int argc, char *argv[]) { fprintf(stderr, _("%s: version %s\n"), argv[0], VERSION); exit(1); } static struct option opts[] = { {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'v'}, {NULL, 0, NULL, 0} }; #ifndef BUF #define BUF 256 #endif int main (int argc, char *argv[]) { char string[BUF]; int c; while (-1 != (c = getopt_long(argc, argv, "hv", opts, NULL))) { switch (c) { case 'v': version (argc, argv); break; case 'h': usage (argc, argv); break; default: break; } } somefunction(string, BUF); printf (_("\n\nString is: %s\n\n"), string); return 0; } ---END--- Thus keeping the i18n and GNU people happy too!
I'd cut the crap off to demonstrate the idea and get, #include <stdio.h> #include <stdlib.h> #include <string.h> void somefunction(char *strout) { char *string2 = "some words"; strcpy(strout, string2); } int main (void) { char *string1; string1 = malloc(11); somefunction(string1); printf ("\n\nString is: %s\n\n",string1); return 0; } And compare to, #include <stdio.h> #include <stdlib.h> #include <string.h> char * somefunction() { char *string2 = "some words"; return string2; } int main (void) { printf ("\n\nString is: %s\n\n", somefunction()); return 0; } -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html