原諒我的C新手!我試圖創建一個接受兩個char數組作爲參數的函數,並返回一些JSON。這是我的代碼,然後是編譯警告。該程序在執行時會簡單地發生段錯誤。從C函數返回字符串接受兩個字符串
#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);
}
當用gcc編譯:
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);
^
你忘了''函數的返回類型。 – xinaiz
您可以使用sprintf()簡化所有這些功能 – nosbor
看起來像一個錯字。 'char get_json(char * sid,char * obuf)'應該是'char * get_json(char * sid,char * obuf)'。注意返回類型的'*'。 – NathanOliver