我想问一下如何在缓冲区中添加一个字符。例如:
char buffer[50];
char one_symbol;如何在buffer中添加one_symbol?我不知道当时的缓冲区有多长,所以我不能只写,例如buffer[5] = one_symbol;
谢谢。
发布于 2013-05-26 03:18:42
您需要做一些事情来跟踪缓冲区中数据的长度。
关于如何做到这一点,您有几个选择。字符串将数据存储在缓冲区中(一个NUL字节),以指示数据结束的位置。另一种可能是将长度存储在外部:
typedef struct {
char data[50];
size_t len;
} buffer;当您想要允许本身可能包含NUL字节的数据时,后者尤其可取。如果你不想你的缓冲区大小固定在50,你可以更进一步:
typedef struct {
size_t allocated;
size_t in_use;
char data[];
};注意,这使用了一个灵活的数组成员,该成员是在C99中添加的,因此一些较旧的编译器不支持它。
发布于 2013-05-26 03:16:16
跟踪或记录当前缓冲区的大小。你可以通过为它添加一个新的变量来实现。
类似于:
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';https://stackoverflow.com/questions/16753034
复制相似问题