How to read unlimited characters in C

后端 未结 3 893
醉酒成梦
醉酒成梦 2020-12-11 07:13

How to read unlimited characters into a char* variable without specifying the size?

For example, say I want to read the address of an employee that may

3条回答
  •  感动是毒
    2020-12-11 07:55

    You have to start by "guessing" the size that you expect, then allocate a buffer that big using malloc. If that turns out to be too small, you use realloc to resize the buffer to be a bit bigger. Sample code:

    char *buffer;
    size_t num_read;
    size_t buffer_size;
    
    buffer_size = 100;
    buffer = malloc(buffer_size);
    num_read = 0;
    
    while (!finished_reading()) {
        char c = getchar();
        if (num_read >= buffer_size) {
            char *new_buffer;
    
            buffer_size *= 2; // try a buffer that's twice as big as before
            new_buffer = realloc(buffer, buffer_size);
            if (new_buffer == NULL) {
                free(buffer);
                /* Abort - out of memory */
            }
    
            buffer = new_buffer;
        }
        buffer[num_read] = c;
        num_read++;
    }
    

    This is just off the top of my head, and might (read: will probably) contain errors, but should give you a good idea.

提交回复
热议问题