非常簡單的情況。C - g_snprintf在一種情況下工作,但不在另一種情況下工作
我有一個response
結構指針,我想填充它的值。
在一個。安迪它的工作:
janus_audiobridge_sync_endpoint_response *response = g_malloc0(sizeof(janus_audiobridge_sync_endpoint_response));
response->error_code = JANUS_AUDIOBRIDGE_ERROR_UNKNOWN_ERROR;
g_snprintf(response->error_cause, 512, "%s - %s", "Failed to find about page with locale - ", locale_text);
return response;
但是當我這樣做basicly同樣的事情的另一種方法,將response->error_cause
原來是null
:
janus_audiobridge_sync_endpoint_response *response = g_malloc0(sizeof(janus_audiobridge_sync_endpoint_response));
response->error_code = 0;
response->error_code = JANUS_AUDIOBRIDGE_ERROR_UNAUTHORIZED;
g_snprintf(response->error_cause, 512, "You need to pass a valid user_secret, before you continue.");
goto plugin_response;
我的問題:爲什麼它的工作原理在一種情況下,而不是另一種? C中最好的Practive是做什麼的?
謝謝!
編輯:甚至離奇的是,當我這樣做:
response->error_cause = "You need to pass a valid user_secret, before you continue.";
它可以在第二個例子中,這是爲什麼?
編輯:
按照要求:
typedef struct janus_audiobridge_sync_endpoint_response {
gint error_code;
gchar *error_cause;
json_t *message;
} janus_audiobridge_sync_endpoint_response;
顯示'janus_audiobridge_sync_endpoint_response'的定義;並可能是[MCVE]。 – Evert
@Evert嘿Evert!我更新了我的問題。 – IvRRimUm
因此,如果你在'goto plugin_response'上放置了一個斷點,那麼'response-> error_cause'在那裏是空的? – Lou