Fluent interface for manipulating employee records
I would drop the edit function and make add_employee the entry point to the API.  I've written a number of fluent APIs in C++ and found that placing the required arguments (e.g., employee name) in the API entry point invaluable.  From the usage point of view, something like:

int main(void) {
    Record db;
    init_record(&amp;db);
    add_employee_to(&amp;db, "Bob")
        -&gt;having_salary(2000)
        -&gt;with_id(10202);
    return 0;
}


The goal of the API is to create a new employee and append them, so make that the entry point.  If you can't have a valid employee record with a name, then this becomes a first-class parameter of the entry point.  Not sure about the requirements, so it may make sense for ID to be a required parameter as well.  I also changed the names to make them More Fluent&trade;.