Dynarr 0.0.1
C dynamic array
Loading...
Searching...
No Matches
input_strings.c
1#include "dynarr.h"
2#include <stdio.h>
3#include <string.h>
4
5#define MAX_NAME_LEN 24
6#define _STR(x) #x
7#define STR(x) _STR(x)
8
9typedef struct name
10{
11 char data[MAX_NAME_LEN + 1];
12}
13name_t;
14
15static int print_name(const void *const element, void *const param);
16
17int main(void)
18{
19 dynarr_t *dynarr;
21 name_t input_name = {0};
22 int entered = 0;
23
24 dynarr = dynarr_create(.element_size = sizeof(name_t));
25 if (!dynarr)
26 {
27 return DYNARR_ALLOC_ERROR;
28 }
29
30 printf("Enter strings:\n");
31 do
32 {
33 printf("> ");
34
35 memset(input_name.data, 0, MAX_NAME_LEN + 1);
36 entered = scanf("%" STR(MAX_NAME_LEN) "s\n", input_name.data);
37
38 if ('\0' != input_name.data[0])
39 {
40 status = dynarr_binary_insert(&dynarr,
41 input_name.data,
42 cmp_lex_asc,
43 TMP_REF(int, MAX_NAME_LEN),
44 NULL);
45 }
46
47 if (DYNARR_SUCCESS != status)
48 {
49 dynarr_destroy(dynarr);
50 return status;
51 }
52 }
53 while (entered != EOF);
54
55 dynarr_foreach(dynarr, print_name, NULL);
56 dynarr_destroy(dynarr);
57 return 0; /* normal exit */
58}
59
60static int print_name(const void *const element, void *const param)
61{
62 (void)param;
63 printf("%s\n", ((name_t*)element)->data);
64 return 0;
65}
66
Describes dynarr public interface.
dynarr_status_t
Represents operation error codes.
Definition dynarr.h:43
@ DYNARR_ALLOC_ERROR
Success status inherited from VECTOR_ALLOC_ERROR.
Definition dynarr.h:45
@ DYNARR_SUCCESS
Success status inherited from VECTOR_SUCCESS.
Definition dynarr.h:44
int dynarr_foreach(const dynarr_t *const dynarr, const foreach_t func, void *const param)
Definition dynarr.c:506
dynarr_status_t dynarr_binary_insert(dynarr_t **const dynarr, const void *const value, const compare_t cmp, void *param, size_t *const index)
Binary insert.
Definition dynarr.c:323
#define dynarr_create(...)
Dynarr constructor.
Definition dynarr.h:81
void dynarr_destroy(dynarr_t *const dynarr)
Deallocates a dynamic array.
Definition dynarr.c:136
#define TMP_REF(type, value)