Biblioteca em C para simular os dicionários do Python.
Para utilizar a biblioteca, é preciso importá-la para o arquivo do seu projeto.
#include "dict.h"
Tendo importado a biblioteca, um dicionário pode ser criado passando a função create_dict()
para uma variável do tipo No *.
No *dicionario = create_dict();
Também é possível printar o dicionário completo utilizando a função show_dict()
. Essa função é do tipo void e não retornará nada.
Sintaxe:
void show_dict(No *dicionario);
Exemplo:
show_dict(dicionario);
Retorno:
{}
Tendo criado um dicionário, é possível inserir valores executando a função insert_key()
. Essa função é do tipo bool e retornará true caso a inserção seja bem sucedida e false caso a inserção falhe. O único erro possível na inserção de valores refere-se a memória insuficiente.
Sintaxe:
bool insert_key(No *dicionario, char *key, char *meaning);
Exemplo:
char keys[3][64] = {"Arroz",
"Árvore",
"Espanha"};
char meanings[3][64] = {"Comida típica.",
"Ser vivo.",
"País europeu."};
for (int i = 0; i < 3; i++)
insert_key(dicionario, keys[i], meanings[i]);
show_dict(dicionario);
Retorno:
{'Arroz': 'Comida típica.', 'Árvore': 'Ser vivo.', 'Espanha': 'País europeu.'}
Também é possível deletar valores do dicionário utilizando a função delete_key()
. Essa função é do tipo bool e retornará true caso a inserção seja bem sucedida e false caso a inserção falhe. Os únicos erros possíveis na deleção de valores referem-se a quando o dicionário é vazio ou quando a chave informada não existe (NULL).
Sintaxe:
bool delete_key(No *dicionario, char *key);
Exemplo:
delete_key(dicionario, keys[1]);
show_dict(dicionario);
Retorno:
{'Arroz': 'Comida típica.', 'Espanha': 'País europeu.'}
Para remover um dicionário por completo, basta utilizar a função delete_dict()
. Essa função é do tipo void e não retornará nada.
Sintaxe:
void delete_dict(No *dicionario);
Exemplo:
delete_dict(dicionario);
Para obter o número de chaves em um dicionário, basta executar a função num_of_keys()
. Essa função é do tipo int e retornára o número de chaves dentro do dicionário.
Sintaxe:
int num_of_keys(No *dicionario);
Exemplo:
int n = num_of_keys(dicionario);
Outra função existente é a de organizar alfabeticamente as chaves de um dicionário. Para chamar essa função, basta utilizar sort_dict()
. Essa função é do tipo void e não retornará nada.
Sintaxe:
void sort_dict(No *dicionario);
Exemplo:
show_dict(dicionario);
sort_dict(dicionario);
show_dict(dicionario);
Retorno:
{'Espanha': 'País europeu.', 'Arroz': 'Comida típica.'}
{'Arroz': 'Comida típica.', 'Espanha': 'País europeu.'}
A biblioteca também contém diferentes funções de pesquisa de conteúdos e chaves no dicionário. Essas funções são search_meaning_byKey()
, search_id_byKey()
, search_meaning_byId()
e search_key_byId()
. Tais funções realizam, respectivamente, uma busca do conteúdo de determinada chave, uma busca do id de determinada chave, uma busca do conteúdo de determinado id e, por fim, uma busca da chave de um determinado id. As funções que retornam strings, ou seja, as que procuram por chaves e conteúdos, retornarão NULL caso a busca não tenha sucesso. Por outro lado, a função que busca por id retornará void caso a busca não tenha sucesso.
Sintaxes:
char *search_meaning_byKey(No *dicionario, char *key);
char *search_meaning_byId(No *dicionario, int id);
char *search_key_byId(No *dicionario, int id);
int search_id_byKey(No *dicionario, char *key);
Exemplo:
show_dict(dicionario);
char key[] = "Arroz";
char *string = malloc(sizeof(char) * 64);
string = search_meaning_byKey(dicionario, key);
if (string != NULL)
printf("\nSignificado de '%s': '%s'\n", key, string);
Retorno:
{'Arroz': 'Comida típica.', 'Espanha': 'País europeu.'}
Significado de 'Arroz': 'Comida típica.'
Caso sinta necessidade, é possível alterar o tamanho das strings dos dicionários. Por padrão, o tamanho é de 64 bytes, ou seja, 64 caracteres. Para alterar isso, vá na aba de pré-processamento no arquivo dict.c e altere o macro MAX para o tamanho desejado.
Padrão:
#define MAX 64
Alteração:
#define MAX [insira_novo_tamanho]