我想问一下如何将一个字符添加到缓冲区中。例如:
char buffer[50];
char one_symbol;
如何添加 one_symbol buffer
?我不知道当时缓冲区有多长,所以我不能只写,例如buffer[5] = one_symbol;
谢谢。
您需要做一些事情来跟踪缓冲区中数据的长度。
关于如何做到这一点,你有几个选择。字符串将数据存储在缓冲区(一个 NUL 字节)中,以指示数据在哪里结束。另一种可能性是在外部存储长度:
typedef struct {
char data[50];
size_t len;
} buffer;
当/如果您希望允许本身可能包含 NUL 字节的数据时,后者尤其可取。如果您不想将缓冲区大小固定为 50,则可以更进一步:
typedef struct {
size_t allocated;
size_t in_use;
char data[];
};
请注意,这使用了在 C99 中添加的灵活数组成员,因此一些较旧的编译器不支持它。
跟踪或缓冲区的当前大小。您可以为此添加一个新变量。
就像是:
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';