Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void rem_book(db *d, char *name) {
- void *buffer;
- size_t buf_sz = sizeof(int);
- buffer = malloc(buf_sz);
- d->count = d->count - 1;
- memcpy_s(buffer, buf_sz, &(d->count), sizeof(int));
- fseek(d->file, sizeof(int), SEEK_SET);
- for (int i = 0; i < d->count + 1; i++) {
- char *tmp = NULL;
- tmp = binary_read_str(d->file);
- if (strcmp(tmp, name) == 0) {
- free(tmp);
- tmp = binary_read_str(d->file);
- free(tmp);
- tmp = binary_read_str(d->file);
- free(tmp);
- tmp = binary_read_str(d->file);
- free(tmp);
- } else {
- buf_sz += strlen(tmp) + 1;
- buffer = realloc(buffer, buf_sz);
- memcpy_s((char*)buffer + buf_sz - strlen(tmp) - 1, strlen(tmp) + 1, tmp, strlen(tmp) + 1);
- free(tmp);
- tmp = binary_read_str(d->file);
- buf_sz += strlen(tmp) + 1;
- buffer = realloc(buffer, buf_sz);
- memcpy_s((char*)buffer + buf_sz - strlen(tmp) - 1, strlen(tmp) + 1, tmp, strlen(tmp) + 1);
- free(tmp);
- tmp = binary_read_str(d->file);
- buf_sz += strlen(tmp) + 1;
- buffer = realloc(buffer, buf_sz);
- memcpy_s((char*)buffer + buf_sz - strlen(tmp) - 1, strlen(tmp) + 1, tmp, strlen(tmp) + 1);
- free(tmp);
- tmp = binary_read_str(d->file);
- buf_sz += strlen(tmp) + 1;
- buffer = realloc(buffer, buf_sz);
- memcpy_s((char*)buffer + buf_sz - strlen(tmp) - 1, strlen(tmp) + 1, tmp, strlen(tmp) + 1);
- free(tmp);
- }
- }
- freopen_s(&(d->file), d->filename, "w+b", d->file);
- fwrite(buffer, buf_sz, 1, d->file);
- freopen_s(&(d->file), d->filename, "r+b", d->file);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement