我想问一下如何在缓冲区中添加一个字符。例如:
char buffer[50];
char one_symbol;
如何将one_symbol添加到buffer
?我不知道缓冲区当时有多长,所以我不能写,例如buffer[5] = one_symbol;
感谢。
答案 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中添加的,因此一些较旧的编译器不支持它。