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:

  1. A ideia primeiro. Antes do código, você entende o problema que ele resolve, com uma comparação do dia a dia.
  2. 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.
  3. 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.
  4. 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.
  5. Várias formas de fazer. Quase sempre há mais de um caminho, e uma tabela "qual usar" mostra quando escolher cada um.
  6. Quando dá errado. O código com erro, a mensagem real do compilador (ou do programa), o que ela quer dizer e como consertar.
  7. 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 o printf ao 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 \n no 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çar ❯

Nível 2 · Intermediário

Ponteiros, memória, structs e arquivos.

Começar ❯

Nível 3 · Avançado

Estruturas de dados, bits, sistema e ferramentas.

Começar ❯

Projetos

Programas completos, construídos passo a passo.

Ver projetos ❯

Referência

Consulta rápida para quando você já sabe o que procura.

Consultar ❯

Como estudar

Programar se aprende fazendo, como andar de bicicleta. Para cada aula, siga estes quatro passos:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
A regra de ouro

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

ElementoO que significa
Caixa com o nome ola.c no cantoO 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 linhaContinuação do comando da linha de cima (por exemplo, o texto de um arquivo sendo criado no terminal).
Linhas sem promptA resposta do computador: a saída do programa ou a mensagem do compilador.
← etiquetaUma explicação do guia sobre aquela linha. Não aparece no terminal real.
C23O 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).
ilustrativoUma 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.
Versão de referência: C23, com o gcc 15 e o Clang

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.