У меня есть функция на C, где я пытаюсь получить строки из двух разных мест (неизвестный размер, может быть довольно большим), объединить их в одну строку и вернуть их. Если я просто печатаю две строки, то получаю правильный результат, но когда я пытаюсь объединить строки с помощью strcat, я получаю 5 символов мусора, а затем результат объединенных строк.
У кого-нибудь есть совет, что я делаю неправильно? Вот пример кода, чтобы продемонстрировать, что я делаю:
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;
}
printf(get_string_1());
лучше, чемprintf("%s", get_string_1());
, если в строке есть процентные символы. - person   schedule 22.04.2011sizeof(char)
определяется как 1 по стандарту C, поэтому вы можете пропустить это. - person ChrisWue   schedule 22.04.2011get_string_1()
иget_string_2()
, пожалуйста. - person Karl Knechtel   schedule 22.04.2011