How to mimic C++ "pass array(pointer) by reference" in C? -


sorry cryptic title, i've searched answer, couldn't find one. anyway, i'm trying pass char array function , modify pointer inside array. here example of mean in c++:

#include "stdio.h" #include "string.h"  void fill(char*& destination, const char* const input, int size) {     memcpy(destination, input, size);     destination += size; }  void inner(const char* const string1, int size1) {     const int size2 = 8;     char string2[size2] = "world!\n";      char output[20];     char* outputwriter = output;      fill(outputwriter, string1, size1);     fill(outputwriter, string2, size2);      printf(output); }  int main() {     inner("hello ", 6);  } 

which outputs hello world!

and here attempt in c:

#include "stdio.h" #include "string.h"  void fill(char** const destination, const char* const input, int size) {     memcpy(destination, input, size);     *destination += size; }  void inner(const char* const string1, int size1) {     const int size2 = 8;     char string2[size2] = "world!\n";      char output[20];     char (*outputwriter)[20] = &output;      fill((char**)outputwriter, string1, size1);     fill((char**)outputwriter, string2, size2);      printf(output); }  int main() {     inner("hello ", 6);  } 

which outputs _orld! , , casting not pretty.

what correct way pass such pointer array function in order able modify similar c++ code does?

this after:

#include "stdio.h" #include "string.h"  void fill(char** destination, const char* const input, int size) {     memcpy(*destination, input, size);     *destination += size; }  void inner(const char* const string1, int size1) {     const int size2 = 8;     char string2[size2] = "world!\n";      char output[20];     char* ptr = output;      fill(&ptr, string1, size1);     fill(&ptr, string2, size2);      puts(output); }  int main() {     inner("hello ", 6); } 

Comments

Popular posts from this blog

javascript - Karma not able to start PhantomJS on Windows - Error: spawn UNKNOWN -

c# - Display ASPX Popup control in RowDeleteing Event (ASPX Gridview) -

Nuget pack csproj using nuspec -