- Reading and sorting strings.
User prompted to enter strings until CTRL+D
is pressed. Strings are delimited by newline or space, inserted into a dynarr_t
in lexicographical ascending order. At the end of the input, program will print contents of the dynarr_t
.
- Author
- Evgeni Semenov
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 24
#define _STR(x) #x
#define STR(x) _STR(x)
typedef struct name
{
char data[MAX_NAME_LEN + 1];
}
name_t;
static int print_name(const void *const element, void *const param);
int main(void)
{
dynarr_t *dynarr;
name_t input_name = {0};
int entered = 0;
if (!dynarr)
{
}
printf("Enter strings:\n");
do
{
printf("> ");
memset(input_name.
data, 0, MAX_NAME_LEN + 1);
entered = scanf("%" STR(MAX_NAME_LEN) "s\n", input_name.data);
if ('\0' != input_name.data[0])
{
input_name.data,
NULL);
}
{
return status;
}
}
while (entered != EOF);
return 0;
}
static int print_name(const void *const element, void *const param)
{
(void)param;
printf("%s\n", ((name_t*)element)->data);
return 0;
}
Describes dynarr public interface.
dynarr_status_t
Represents operation error codes.
@ DYNARR_ALLOC_ERROR
Success status inherited from VECTOR_ALLOC_ERROR.
@ DYNARR_SUCCESS
Success status inherited from VECTOR_SUCCESS.
int dynarr_foreach(const dynarr_t *const dynarr, const foreach_t func, void *const param)
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.
#define dynarr_create(...)
Dynarr constructor.
void dynarr_destroy(dynarr_t *const dynarr)
Deallocates a dynamic array.
#define TMP_REF(type, value)