On Thu, 14 Sep 1995, Scatter wrote: > > Btw, I know I can 'return "string"' in order to return a string from a > > char* function, but if I have a local buffer, how would I return a string > > in the same manner without returning the address of the local buffer? > > char *some_fun(char *str){ > char my_buf[SOME_LENGTH]; > > strcpy(my_buf, str); > return(strdup(my_buf)); > } > > A worthless piece of code that should answer your question. > > /* I hate posting code, cuz I'm just too damn insecure :) */ > > I guess it's not a good idea to post such code without comments in this list. From my experience there are some C newbies in this group too, and your "solution" could lead them to some mistakes. First, the strcpy in your example is rather useless, as the declaration of the variable my_buf, but well, the question was how to return a local buffer. :) But you shouldn't forget to mention for C-newbies, that strdup allocates memory for the string, and therefore needs to be free'd if it's no longer needed. I guess the original poster didn't want to allocate memory, but rather wants what is called a static variable. char *some_fun(int secret) { static char my_buf[SOME_LENGTH]; sprintf(my_buf, "The secret number is %d.", secret); return my_buf; } Herbert [on public request 12 lines of signature deleted] *snip* ;)
This archive was generated by hypermail 2b30 : 12/07/00 PST