C将一个char添加到缓冲区

时间:2013-05-25 19:12:39

标签: c char buffer

我想问一下如何在缓冲区中添加一个字符。例如:

char buffer[50];
char one_symbol;

如何将one_symbol添加到buffer?我不知道缓冲区当时有多长,所以我不能写,例如buffer[5] = one_symbol;

感谢。

2 个答案:

答案 0 :(得分:1)

保持跟踪或缓冲区当前大小。您可以通过为其添加新变量来实现。

类似的东西:

char buffer[50];
size_t current_size = 0;  /* Buffer is of size zero from the size */

/* ... */

/* Add one character to the buffer */
buffer[current_size++] = 'a';

答案 1 :(得分:1)

您需要执行某些内容来跟踪缓冲区中数据的长度。

您有几个选择如何做到这一点。字符串将数据存储在缓冲区(NUL字节)中,以指示数据结束的位置。另一种可能性是在外部存储长度:

typedef struct { 
    char data[50];
    size_t len;
} buffer;

当/如果要允许本身可能包含NUL字节的数据时,后者尤其适用。如果您不希望缓冲区大小固定为50,则可以更进一步:

typedef struct { 
    size_t allocated;
    size_t in_use;
    char data[];
};

请注意,这使用了一个灵活的数组成员,该成员是在C99中添加的,因此一些较旧的编译器不支持它。