1

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

char buffer[50];
char one_symbol;

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

谢谢。

4

2 回答 2

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 中添加的灵活数组成员,因此一些较旧的编译器不支持它。

于 2013-05-25T19:18:41.587 回答
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';
于 2013-05-25T19:16:16.427 回答