Пример #1
0
int main() {
	AssocList *alist = alist_create((CmpFunc)strcmp);

	alist_put(alist, strdup("John"), strdup("+1-234-567-89-10"));
	alist_put(alist, strdup("Alex"), strdup("911"));
	alist_put(alist, strdup("Mike"), strdup("112"));

	for (;;) {
		char *name = read_string("Enter name, 'q' to exit");
		if (strcmp(name, "q") == 0) {
			break;
		} else {
			char *number = alist_get(alist, name);
            char *update_answer;
			if (number == NULL) {
				printf("%s not found.\n", name);
				update_answer = read_string("Add? [y/n]");
			} else {
				printf("%s: %s\n", name, number);
				update_answer = read_string("Update? [y/n]");
			}
            if (update_answer[0] == 'y' || update_answer[0] == 'Y') {
                number = read_string("Enter phone number");
                alist_put(alist, strdup(name), number);
                printf("%s: %s\n", name, number);
            }
            free(update_answer);
			free(name);
		}
	}

	printf("\nYour phonebook:\n");
	alist_foreach(alist, print_phonebook_entry);

	alist_foreach(alist, free_key_and_value);

	alist_destroy(alist);

	return 0;
}
Пример #2
0
void delete_projectiles(ProjectileList *projlist) {
	alist_foreach(projlist, _delete_projectile, NULL);
}