При размещении строк в куче (с помощью 'malloc'),
и их инициализации стандартным вводом (с помощью 'fgets)
между ними появляется ненужная новая строка при попытке их распечатать (с помощью' printf 'и% s форматирование).
например:
main()
{
char *heap1;
char *heap2;
heap1=malloc(10);
heap2=malloc(10);
fgets(heap1,10,stdin);
fgets(heap2,10,stdin);
printf("%s%s",heap1,heap2);
}
при вводе «hi1 \ nhi2» выдает «hi1 \ nhi2». скомпилирован с использованием gcc 4.3.4 для Debian.
"hi1\nhi2\n"
, является хорошей подсказкой (обратите внимание, что в вашем тестовом примере нет явной новой строки). По возможности используйте массивы в стеке (здесь не нужно выполнять malloc); ваша жизнь станет проще. - person   schedule 19.02.2010