连接字符串并将它们存储在ANSI C的缓冲区中

时间:2014-09-18 08:15:25

标签: c string ansi

我有一个多次调用OutputBuffer的函数:

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

在OutputBuffer中,我希望将字符串存储在全局变量char TestBuffer [1000]中,然后在显示器上显示它们:

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

我只得到每个String的长度,但只得到最后一个字符串(AddString ...)。有任何建议如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您需要一个额外的全局变量来保存TestBuffer上达到的当前位置。

答案 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);
}