⚡ Cap 18: Manipulação de Arquivos & Persistência
Especialização em Engenharia de Sistemas com Linguagem C (C17/C23)
🗺️ Slide 1: A Abstração de Streams (FILE*)
graph LR
A["Código em C"] --> B["Buffer stdio (RAM)"]
B --> C["Kernel / File Descriptor"]
C --> D["Disco / SSD"]
style A fill:#0284c7,stroke:#38bdf8,color:#ffffff
style B fill:#059669,stroke:#34d399,color:#ffffff
style D fill:#d97706,stroke:#f59e0b,color:#ffffff
- Abertura Segura: Teste sempre
if (fp == NULL). - Fechamento Obrigatório:
fclose(fp)para evitar File Descriptor Leaks.
📄 Slide 2: Texto vs Binário
| Característica | Modo Texto ("r", "w") |
Modo Binário ("rb", "wb") |
|---|---|---|
| Funções | fgets(), fprintf() |
fread(), fwrite() |
| Parsing | Necessário (converte strings). | Zero Parsing (cópia direta da RAM). |
| Quebras de Linha | Traduz \n $\leftrightarrow$ \r\n. |
Bytes puros sem alteração. |
🧭 Slide 3: Navegação com fseek() e ftell()
fseek(fp, 0, SEEK_END);
long tamanho = ftell(fp); // Mede o tamanho em bytes
rewind(fp); // Retorna ao início
-
SEEK_SET: InícioSEEK_CUR: Posição atualSEEK_END: Fim do arquivo.
🛡️ Slide 4: Boas Práticas (CERT C)
fflush(fp): Força o descarregamento do buffer em disco.- Evite
while (!feof(fp)); controle o loop pelo retorno defread()/fgets(). - Use
"b"explicitamente em arquivos binários para portabilidade multiplataforma.
📋 Resumo da Aula & Próximos Passos
- Revise os códigos de exemplo deste capítulo.
- Teste seus conhecimentos no Quiz Formativo.
- Pratique os exercícios em 4 níveis de complexidade.
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim