2014-09-18 3 views
0

У меня есть функция, которая вызывает OUTPUTBUFFER Serveral раз:Соединить строки и хранить их в буфере в ANSI C

void display(void) 
{ 
    OutputBuffer("This is String One"); 
    sprintf(PrintBuffer, "String Two %s",modeStr); 
    OutputBuffer(PrintBuffer); 
    sprintf(PrintBuffer,"AddString = %s",modeStr2); 
    OutputBuffer(PrintBuffer); 
} 

В OUTPUTBUFFER я хотел бы хранить строки в глобальной переменной символ TestBuffer [1000] а затем показать их на дисплее:

void OutPutBuffer(char *Buffer) 
{ 
    int var = strlen(Buffer); 
    sprintf(TestBuffer, Buffer); 
} 

Я только получить длину каждой строки, но, но только последняя строка (AddString ...). Любые предложения, как это решить?

+1

Вы должны использовать [strcat] (http://www.cplusplus.com/reference/cstring/strcat/). ИЛИ 'snprintf (TestBuffer + strlen (TestBuffer), 1000,«% s »Buffer);' –

+1

Остерегайтесь переполнения буфера. –

ответ

0

Использование strcat

void OutputBuffer(char *Buffer) 
{ 
    int var = strlen(Buffer); 

    if(var+strlen(TestBuffer)>=1000) 
     return; 

    strcat(TestBuffer,Buffer); 
} 

Использование snprintf

void OutPutBuffer(char *Buffer) 
{ 
    int var = strlen(Buffer); 

    if(var+strlen(TestBuffer)>=1000) 
      return; 

    snprintf(TestBuffer+strlen(TestBuffer),var,"%s",Buffer); 
} 
+0

Это сработало для меня. Thanx так много @Jayesh – typeJoelz

+0

@typeJoelz Добро пожаловать. –

+0

Он не покажет мне полную строку, разрезает ее ровно после 100 символов. Должен ли я выделять пространство отдельно или что-то еще? – typeJoelz

0

Для сохранения текущей позиции, достигнутой в TestBuffer, вам понадобится дополнительная глобальная переменная.