Verzeihen Sie meine C newbness! Ich versuche, eine Funktion zu erstellen, die zwei Char-Arrays als Argumente akzeptiert und JSON zurückgibt. Hier ist mein Code, gefolgt von Kompilierungswarnungen. Das Programm segmentiert einfach bei der Ausführung.Return String von C-Funktion akzeptiert zwei Strings
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char get_json(char *sid, char *obuf)
{
char *json;
json = malloc(strlen(obuf)+37);
strcpy(json, "{\"sessionline\":{\"sid\":\"");
strcat(json, sid);
strcat(json, "\",\"line\":\"");
strcat(json, obuf);
strcat(json, "\"}}");
return json;
}
int main()
{
char *sid = "xyzxyzxyz";
char *obuf = "asdfasdfasdfasdf";
char *json = get_json(sid, obuf);
printf(json);
}
Wenn mit gcc kompilieren:
test.c: In function ‘get_json’:
test.c:14:9: warning: return makes integer from pointer without a cast [enabled by default]
return json;
^
test.c: In function ‘main’:
test.c:21:22: warning: initialization makes pointer from integer without a cast [enabled by default]
char *json = get_json(sid, obuf);
^
test.c:22:9: warning: format not a string literal and no format arguments [-Wformat-security]
printf(json);
^
Sie haben vergessen, '*' in Funktion Rückgabetyp. – xinaiz
Sie können alle diese Funktionen vereinfachen, indem Sie sprintf() verwenden – nosbor
Sieht aus wie ein Tippfehler. 'char get_json (char * sid, char * obuf)' sollte 'char * get_json (char * sid, char * obuf)' sein. Notieren Sie das '*' auf dem Rückgabetyp. – NathanOliver