2013-12-12 2 views
0

Я хочу объединить множество строк вместе, чтобы создать уникальную строку, которая будет достаточно длинной. Вот пример кода:Печать строки большой длины, не отображающей всех символов

char *s; 
s= strconcat("A big-length string",NULL); 
fprintf(stdout,"%s",s);` 

Когда я пытаюсь напечатать, строка меньше печатается меньше фактической строки. Предположим, что функция strconcat() работает хорошо. У меня есть malloc() некоторая площадь для s ??

Также, когда я пытаюсь strlen(s), он показывает мне правильный номер, например, 1078. только печать - это вопрос.

EDIT Проблема решена, когда после всех строк, я пытаюсь придать \n как этот

s= strconcat("A big-length string","\n",NULL);

+5

Если мы можем предположить, что 'strconcat' функция работает хорошо, мы можем также предположим, что он выполняет выделение памяти (и что вы должны «освобождать (ы)» после печати). Как мы можем решить вашу проблему, если вы (а) не показываете нам важный код и (б) не предоставляете реальные данные для кода? –

+4

'strconcat()' не является стандартной функцией. Мы не знаем, что он делает. У вас есть источник для этого, чтобы показать его здесь? Вероятно, вы имеете в виду 'strcat()'. – alk

+0

Что делает функция 'strconcat', точно? – interjay

ответ

4

Выход с использованием Printf/fprintf обычно буфер.

Если выходной файл подключен к терминалу, вывод буферизируется по строке, поэтому буфер будет очищаться каждые \n.

Если выходной файл не подключен к терминалу, вывод будет полностью буферизирован, поэтому буфер будет сброшен, когда он будет заполнен. Типичные размеры буфера: 1kb-8kb.

, чтобы гарантировать, что буфер очищается вызов:

fflush(stdout); 

Вы можете очистить все файловые буферы с:

fflush(NULL); 
Смежные вопросы