user2205288
user2205288

Reputation:

C adding one char to buffer

I would like to ask how to add one char to a buffer. For example:

char buffer[50];
char one_symbol;

How to add one_symbol to buffer? I don't know how long the buffer is at the time, so I cant just write, for example buffer[5] = one_symbol;

Thanks.

Upvotes: 1

Views: 12525

Answers (2)

Jerry Coffin
Jerry Coffin

Reputation: 490108

You need to do something to keep track of the length of the data in the buffer.

You have a couple of choices about how to do that. Strings store data in the buffer (a NUL byte) to signal where there data ends. Another possibility is to store the length externally:

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

This latter is particularly preferable when/if you want to allow for data that itself might include NUL bytes. If you don't want your buffer size fixed at 50, you can go a step further:

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

Note that this uses a flexible array member, which was added in C99, so some older compilers don't support it.

Upvotes: 1

Some programmer dude
Some programmer dude

Reputation: 409166

Keep track or the buffers current size. You can do it by adding a new variable for that.

Something like:

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';

Upvotes: 1

Related Questions