我在C中有一個函數,我試圖從兩個不同的位置(未知大小,可能會安靜很大)獲取字符串,並將它們合併爲一個字符串並返回它們。如果我只是打印兩個字符串,然後我得到正確的結果,但是當我嘗試使用strcat結合字符串時,我最終得到了5個垃圾字符,然後是組合字符串的結果。C strcat垃圾字符
任何人都有一些建議,我做錯了什麼?下面是一些示例代碼來演示我在做什麼:
static int get_information(char** results)
{
size_t s1_length;
size_t s2_length;
/* DEBUGGING - Prints the correct string */
printf(get_string_1());
printf(get_string_2());
printf("\n");
/* Allocate memory for new string */
s1_length = strlen(get_string_1());
s2_length = strlen(get_string_2());
*results = malloc(sizeof(char) * (dir_length + file_length));
if(results == NULL)
return -1;
/* Combine the strings */
strcat(*results, get_string_1());
strcat(*results, get_string_2());
/* DEBUGGING - prints 5 garbage characters then the correct string */
printf(*results);
printf("\n");
return 0;
}
什麼是dir_length和file_length? – taskinoor 2011-04-22 04:47:20
'printf(get_string_1());'最好是'printf(「%s」,get_string_1());'如果字符串中包含百分比字符。 – 2011-04-22 04:48:51
Btw:'sizeof(char)'被C標準定義爲1,所以你可以跳過這個。 – ChrisWue 2011-04-22 04:54:45