Tutorial C
Aprenda C do zero, como numa escola: cada linha de código é explicada parte por parte, você vê exatamente o que aparece na tela e pratica num editor aqui mesmo no navegador. E o editor não é uma imitação: ele compila e roda C de verdade, com um compilador real (o Clang) funcionando dentro da página. O guia ensina o C23, a versão atual da linguagem, e todas as saídas e mensagens de erro foram conferidas num computador real, com o gcc 15. Vale para Linux, Windows e macOS.
Comece pelo Nível 1 ❯Experimente agora
A caixa abaixo é o editor Experimente do guia. Ela tem um programa em C completo, de seis linhas, pronto para rodar. Clique em Rodar. Na primeira vez, o navegador baixa o compilador (uns 20 e poucos megabytes; pode levar alguns segundos, dependendo da sua internet). Depois disso, cada execução é bem mais rápida. Nada do que você fizer aqui mexe no seu computador.
Missão: clique em Rodar e veja o Olá, mundo! aparecer. Depois troque o texto entre as aspas por Estou aprendendo C! e rode de novo. Cuidado para não apagar as aspas ", o \n, o parêntese ) nem o ; do fim da linha.
#include <stdio.h>
int main(void) {
printf("Olá, mundo!\n");
return 0;
}
#include <stdio.h>
int main(void) {
printf("Estou aprendendo C!\n");
return 0;
}
O que aconteceu: quando você clicou em Rodar, duas coisas aconteceram, uma depois da outra. Primeiro, o compilador leu o seu texto e o transformou num programa (como um tradutor que passa uma receita do português para a língua da cozinheira). Depois, o programa rodou e escreveu a frase. Esse "traduzir antes de rodar" é a marca do C, e a aula Como o C Vira Programa mostra cada etapa.
Das seis linhas, a que faz alguma coisa é a do printf. O nome vem de print formatted, "imprimir formatado": ele escreve um texto na tela. As outras linhas são a moldura que todo programa em C precisa ter. A aula Olá, Mundo explica cada pedaço com calma.
Se você apagou o ; sem querer, viu uma mensagem em inglês com a palavra error, e o programa nem chegou a rodar. Não se assuste: é o compilador dizendo em que linha e em que coluna ele se perdeu. A aula Lendo Erros do Compilador ensina a ler essas mensagens, que no começo parecem grego e depois viram as suas melhores amigas.
Um programa que faz conta
Computadores são ótimos em contas. A caixa abaixo guarda duas notas da Ana em duas variáveis (caixinhas com nome, aula Variáveis) e mostra a média. O %d dentro do texto é um "buraco" que o printf preenche com o número que vem depois da vírgula (aula Formatos do printf). Rode e veja o resultado.
Missão: rode e veja a média 8. A professora corrigiu as provas de novo: a primeira valia 8 e a segunda 10. Troque os dois números, rode outra vez, e a média deve virar 9.
#include <stdio.h>
int main(void) {
int prova1 = 7;
int prova2 = 9;
printf("Média da Ana: %d\n", (prova1 + prova2) / 2);
return 0;
}
#include <stdio.h>
int main(void) {
int prova1 = 8;
int prova2 = 10;
printf("Média da Ana: %d\n", (prova1 + prova2) / 2);
return 0;
}
Repare que o texto entre aspas aparece igualzinho, e no lugar do %d aparece a conta (prova1 + prova2) / 2 já calculada. Curiosidade que vai ser útil depois: se as notas fossem 7 e 8, a média apareceria 7, e não 7.5. Em C, a divisão entre dois números inteiros joga fora a parte quebrada. A aula Operadores Aritméticos explica por quê e como pedir o 7.5.
O que é este guia
O C é uma linguagem de programação pequena e muito rápida, criada em 1972 para escrever o sistema Unix. Mais de cinquenta anos depois, ela continua por trás de muita coisa que você usa todo dia sem perceber: o núcleo do Linux (que roda em servidores, no Android e em roteadores), o Git, o interpretador do Python, o banco de dados SQLite (que está dentro de todo celular) e o programa de máquinas de lavar, micro-ondas e placas como o Arduino. A aula O que é C conta essa história.
Quem aprende C consegue:
- escrever programas que fazem contas, tomam decisões, repetem tarefas e organizam listas de dados;
- entender o que acontece "por baixo" de qualquer programa: a memória, os endereços, como o texto que você escreve vira instruções da máquina;
- criar ferramentas de terminal, jogos simples e programas que leem e gravam arquivos;
- aprender depois C++, Java, C#, Go, Rust ou JavaScript com muito mais facilidade, porque todas copiaram a "cara" do C.
O guia é para quem nunca programou. Ele começa do zero absoluto (o que é um programa? o que é compilar?) e vai até ponteiros, memória dinâmica, estruturas de dados, Makefile, depuração com gdb e as novidades do C23. O C tem fama de difícil porque ele não protege você: deixa você mexer direto na memória e não avisa quando você erra. Por isso o guia ensina, desde a primeira aula, os hábitos que evitam esses problemas (ligar os avisos do compilador, conferir o que o usuário digitou, liberar a memória que pediu) e mostra as ferramentas que acham os erros por você.
Como as aulas funcionam
Nenhum código aparece "seco". Toda aula segue o mesmo caminho:
- A ideia primeiro. Antes do código, você entende o problema que ele resolve, com uma comparação do dia a dia.
- Anatomia. Cada pedaço de uma linha nova é separado e explicado: o que é palavra do C, o que é nome escolhido por você, para que serve cada símbolo.
- A saída real. Você vê exatamente o que aparece na tela, com etiquetas laranja apontando o que importa. Toda saída foi produzida por um compilador de verdade.
- Experimente. Pelo menos duas caixas por aula para você mudar o código e rodar, muitas com uma missão e um botão para ver a solução. As caixas compilam o C de verdade, então os erros que você vir são erros reais.
- Várias formas de fazer. Quase sempre há mais de um caminho, e uma tabela "qual usar" mostra quando escolher cada um.
- Quando dá errado. O código com erro, a mensagem real do compilador (ou do programa), o que ela quer dizer e como consertar.
- Exercícios e resumo. Perguntas com correção na hora e uma lista curta do que levar da aula.
Exemplo: a anatomia de uma linha
Esta é a linha que você mudou lá em cima. Veja como as aulas desmontam uma linha de código:
printf("Olá, mundo!\n");
- printf
- O nome da função que escreve na tela (print formatted, "imprimir formatado"). Ela não faz parte da linguagem em si: vem pronta na biblioteca padrão do C, e é por isso que o programa começa com
#include <stdio.h>(standard input/output, "entrada e saída padrão"), o arquivo que apresenta oprintfao compilador. - ( )
- Os parênteses levam para a função aquilo com que ela vai trabalhar. Aqui, o texto a escrever.
- "Olá, mundo!\n"
- O texto a mostrar. As aspas marcam onde ele começa e termina e não aparecem na tela. O
\nno fim é uma quebra de linha (aula Novas Linhas e Escapes). - ;
- O ponto e vírgula termina a instrução, como o ponto final de uma frase. Esquecê-lo é o erro número um de quem começa.
Exemplo: o terminal
Além do editor, as aulas mostram o terminal da máquina fictícia do guia: um computador chamado notebook, da usuária ana, com Linux em português e o gcc 15 instalado. Ali, a Ana guarda o código num arquivo, pede ao gcc (o compilador) para transformá-lo em programa e depois roda o programa:
$ cat ola.c « mostra o conteúdo do arquivo
#include <stdio.h>
int main(void) {
printf("Olá, mundo!\n");
return 0;
}
$ gcc -std=c23 -Wall -Wextra ola.c -o ola « compila: ola.c vira o programa ola
$ ./ola « roda o programa
Olá, mundo!
$ echo $?
0 « código de saída 0: terminou sem erro
Repare que o gcc não escreveu nada: no mundo do terminal, silêncio quer dizer sucesso. Se houvesse um erro, ele apareceria ali. E quando falta o ;, é assim que o gcc reclama:
$ gcc -std=c23 -Wall -Wextra erro.c -o erro
erro.c: In function ‘main’:
erro.c:4:28: error: expected ‘;’ before ‘return’ « linha 4, coluna 28: faltou um ; antes do return
4 | printf("Olá, mundo!\n")
| ^
| ; « o gcc até mostra onde ele vai
5 | return 0;
| ~~~~~~
$ echo $?
1 « 1: a compilação falhou, nenhum programa foi criado
As mensagens do compilador saem em inglês, mesmo com o computador em português. O guia traduz e explica cada uma. A aula Compilar com gcc explica o que significa cada pedaço do comando gcc -std=c23 -Wall -Wextra ola.c -o ola, e a aula O Editor do Guia ensina a usar as caixas Experimente.
Escolha sua trilha
O guia tem três níveis, uma seção de projetos e uma de referência. Os níveis foram pensados para serem feitos em ordem: cada aula usa o que as anteriores ensinaram.
Nível 1 · Iniciante
Programar em C do zero.
- Começando: o que é C, como o código vira programa, instalar e escolher um editor
- Primeiros Passos: o primeiro programa, compilar com gcc,
printf, erros e avisos - Variáveis e Tipos e Operadores: números, letras,
bool,scanf - Decisões e Laços:
if,switch,while,for - Arrays e Texto e Funções: listas, strings,
fgets, recursão,math.h
Nível 2 · Intermediário
Ponteiros, memória, structs e arquivos.
- Ponteiros: endereços,
&e*, ponteiro nulo, ponteiros e arrays - Memória Dinâmica:
malloc,free, vazamentos - Tipos Próprios:
struct,typedef,enum,union - Arquivos e Programas de Verdade:
fopen,argv,stderr - Organizar o Código: macros, arquivos
.h, Makefile
Nível 3 · Avançado
Estruturas de dados, bits, sistema e ferramentas.
- Bits: operadores de bits, máscaras e flags
- Estruturas de Dados: listas ligadas, pilhas, árvores, tabela hash,
qsort - A Linguagem a Fundo: comportamento indefinido,
_Generic, as novidades do C23 - Sistema: data e hora, sinais,
fork, threads - Ferramentas e Qualidade: gdb, sanitizers, Valgrind, CMake, segurança
Projetos
Programas completos, construídos passo a passo.
- Calculadora e jogo de adivinhação
- Boletim de notas e contador de palavras
- Agenda de contatos com arquivo de texto
- Estoque da lojinha (arquivo binário) e lista de tarefas (lista ligada)
Referência
Consulta rápida para quando você já sabe o que procura.
printfescanf,string.h,stdlib.hestdio.h- Tipos e limites e operadores
- Erros comuns do compilador e do programa
- Glossário e quiz
Como estudar
Programar se aprende fazendo, como andar de bicicleta. Para cada aula, siga estes quatro passos:
- Leia com calma. Leia a ideia, a anatomia e a saída. Não pule a parte "Quando dá errado": quem sabe ler um erro programa duas vezes mais rápido.
- Rode no editor. Clique em Rodar em toda caixa Experimente. Mude um número, um texto, apague um
;de propósito e veja o que acontece. Não tem como estragar nada: o botão Restaurar volta ao código original. - Faça as missões. As caixas com Missão conferem sozinhas se você acertou. Tente de verdade antes de abrir a solução; se abrir, digite a solução você mesmo em vez de só olhar.
- Pratique no terminal. Quando tiver o compilador instalado, repita os exemplos no seu computador, com o seu editor, compilando com
gcc. É assim que se programa "de verdade", e algumas aulas (gdb, Valgrind, processos, threads) só funcionam ali.
Ler não basta: digite cada exemplo. Copiar e colar ensina pouco; digitar faz você reparar em cada ;, cada chave e cada aspa. Para instalar o compilador, veja Instalar no Linux ou Instalar no Windows e macOS, e para escolher onde escrever o código, Editores e IDEs. Se ainda não quiser instalar nada, tudo bem: quase todo o Nível 1 pode ser feito só no navegador.
O editor que compila C de verdade
As caixas Experimente não fingem: dentro delas roda o Clang, um dos dois compiladores de C mais usados do mundo, transformado em WebAssembly (o formato de programa que os navegadores sabem executar). Ele compila o seu código com -std=c23 -Wall -Wextra, as mesmas opções que o guia usa no terminal, mostra os erros e avisos e roda o programa. Você pode digitar a entrada quando o programa pede, usar vários arquivos e até ver o programa "morrer" com uma falha de segmentação, como no Linux.
Duas diferenças para lembrar: o editor usa o Clang e os terminais das aulas mostram o gcc, então as mensagens de erro dizem a mesma coisa com palavras um pouco diferentes; e o editor imita um computador de 32 bits, então alguns tamanhos (como o de um ponteiro) são menores que no seu computador. A aula O Editor do Guia mostra tudo isso com calma.
Como ler este guia
| Elemento | O que significa |
|---|---|
Caixa com o nome ola.c no canto | O conteúdo de um arquivo de código. O nome no canto é o nome do arquivo. Quando aparece trecho, é só um pedaço de programa, não um arquivo inteiro. |
ana@notebook:~/c$ | O prompt do terminal: usuária ana, na máquina notebook, na pasta ~/c (a pasta c dentro da pasta pessoal). O que vem depois é o comando digitado. |
> no começo da linha | Continuação do comando da linha de cima (por exemplo, o texto de um arquivo sendo criado no terminal). |
| Linhas sem prompt | A resposta do computador: a saída do programa ou a mensagem do compilador. |
| ← etiqueta | Uma explicação do guia sobre aquela linha. Não aparece no terminal real. |
| C23 | O recurso só existe a partir dessa versão do C. A aula diz a alternativa para versões mais antigas (veja Versões do C). |
| ilustrativo | Uma tela que não pôde ser produzida na máquina do guia (por exemplo, a instalação no Windows). Ela segue os passos oficiais, mas os detalhes podem variar. |
As saídas do terminal foram conferidas com o gcc 15.2 e o clang 21.1, num Linux (Ubuntu 26.04) em português do Brasil. O editor do navegador usa o Clang 22, compilado para WebAssembly, com a wasi-libc como biblioteca padrão. Os compiladores seguem o mesmo padrão da linguagem, então o resultado dos programas corretos é o mesmo; só as mensagens de erro usam palavras um pouco diferentes. Quase tudo do Nível 1 funciona em qualquer compilador de C dos últimos vinte anos; quando um recurso é novo, a aula avisa com o selo de versão.