i want to get an int and string from C function. int - error code, string - the data.
Tried that way:
package main
/*
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int test(char *out){
snprintf(out, sizeof out, "1234567890abcd");
return 0;
}
*/
import "C"
import (
"fmt"
"unsafe"
)
func main() {
foo := C.CString("")
defer C.free(unsafe.Pointer(foo))
C.test(foo)
fmt.Println("Output is: "+C.GoString(foo))
}
and it almost worked.
Output is: 1234567
but should be: 1234567890abcd
I think that size of C.String passed to C function is 8. But don't know how can I extend it (fixed size <> 8) or change into dynamic.
So the question is: How should I pass that variable to C?