A biblioteca boost::Asio é uma ótima opção para networking no C++. Mas em C o mais popular é o socket mesmo. Vamos aprender algumas tarefas básicas com socket neste, e nos próximos posts.
(mais…)Tags: c
Pra uma linguagem de programação que nasceu em 1973 e rapidamente ganhou popularidade, falar de Old School significa voltar 40 anos atrás. Em mais de quatro décadas até a linguagem C evoluiu bastante, mas ainda assim existe muita coisa, principalmente em códigos antigos, ou em documentação antiga, que utiliza a sintaxe antiga de declaração de funções.
(mais…)Todo mundo sabe que printf faz escrita de dados, e que scanf faz leitura de dados, mas nem todo mundo sabe usar scanf para fazer parser de entrada de dados. Nest post vamos ensinar a fazer parser de formatos básicos usando scanf.
(mais…)Uma das primeiras funções que a maioria aprende em C é printf, mas pouca gente sabe como definir uma função como printf, que recebe uma quantidade de argumentos que depende do primeiro argumento. Para isso existe um conjunto de funções declaradas no arquivo stdarg.h (ou cstdarg).
(mais…)No post de hoje vamos implementar uma pilha usando uma lista ligada em C, ou seja, sem usar classes. O mais importante hoje é demonstrar como implementar apropriadamente uma estrutura de dados e as funções que vão manipular os dados.
No próximo post vamos implementar a mesma pilha usando lista ligada utilizando C++, ou seja, utilizando classes, os dois posts em conjunto servirão como exemplo da importância das estruturas de dados no desenvolvimento de software.
(mais…)Vazamento de memória é uma pequena praga que precisa ser combatido. Em alguns sistemas pode não fazer muita diferença, mas quando o processamento envolve um volume grande de dados, ou quando a memória é restrita, como em sistemas embarcados, por exemplo, é necessário tomar muito cuidado.
Pra facilitar a detecção de vazamento de memória podemos fazer uma pequena biblioteca para localizar cada malloc sem seu devido free.
(mais…)Na linguagem C os arrays multidimensionais, ou matrizes, são alocadas como um único bloco de memória, independente de quantas dimensões tenha o array. Isso implica em algumas situações que pode facilitar o acesso a elementos individuais de forma mais rápida. Saber como os arrays funcionam auxiliam não só na otimização do código, como também na identificação e correção de falhas.
(mais…)Uma ótima ferramenta para fazer parser de campos separados por caracter é o strtok. Nesse caso vamos fazer um contador de palavras e um parser básico de CSV. Apesar de ser uma função muito bem documentada tem gente que ainda se enrola um pouco ao usar, então vamos aprender como fazer certo.
(mais…)Tá aí uma falha que pode causar problemas intermitentes e consequentemente muitas horas de desenvolvimento para corrigi-la. Vamos aprender a identificá-la e como evitar esse problema.
Abertura de Escopo
Tem muito programador C/C++ por aí que não sabe como abrir um escopo novo. Basicamente qualquer par de chaves abre um novo escopo em C/C++, e as variáveis ali declaradas somente tem validade dentro desse escopo. Em tempo de compilação isso serve para determinar a validade de cada variável.
(mais…)Já trabalhei em várias equipes, algumas tinham um cuidado extremo com a gestão da alocação de memória, outras não se preocupavam tanto assim. Independente da atitude da equipe é importante saber como evitar vazamentos, e quais as consequências.
Para quem não sabe o que é vazamento de memória: é a manutenção de memória alocada dinamicamente após seu uso de forma que não possa ser recuperada, utilizada ou desalocada. O mesmo pode-se dizer de outros recursos. O programa funciona perfeitamente, porém em algum momento a memória acaba, e aí começam os problemas.
(mais…)