🧩 Exercícios: Cadeias de Caracteres, e Segurança OWASP
Spec Sistemas Com C • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 12.1 — Manipulação Segura com strlen(), strncpy() e strncat()
Contexto: Manipulação Segura com strlen(), strncpy() e strncat() no contexto de Cadeias de Caracteres,
Requisitos de Execução:
- Copiar e concatenar strings respeitando o terminador nulo
\0e tamanhos máximos de buffer.
Resultado Esperado
Strings manipuladas de forma segura com funções delimitadas.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_12_1_SeuNome - Envie na tarefa:
Atividade Cap 12 - Cadeias de Caracteres, <string.h> e Segurança OWASP
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
#include <string.h>
int main(void) {
char destino[32] = "Portal: ";
const char *origem = "Linguagem C";
strncat(destino, origem, sizeof(destino) - strlen(destino) - 1);
printf("String resultante: %s (Tamanho: %zu)\n", destino, strlen(destino));
return 0;
}
🔍 Nível 2: Prática
Problema 12.2 — Comparação e Busca de Substrings com strcmp() e strstr()
Contexto: Comparação e Busca de Substrings com strcmp() e strstr() no contexto de Cadeias de Caracteres,
Requisitos de Execução:
- Localizar substring dentro de texto corporativo e validar igualdade de identificadores.
Resultado Esperado
Substring localizada e índice de início exibido.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_12_2_SeuNome - Envie na tarefa:
Atividade Cap 12 - Cadeias de Caracteres, <string.h> e Segurança OWASP
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
#include <string.h>
int main(void) {
const char *log = "ERROR_404: Recurso nao encontrado";
if (strstr(log, "ERROR") != NULL) {
puts("Registro classificado como ERRO!");
}
return 0;
}
⚡ Nível 3: Integração
Problema 12.3 — Tokenização de Strings com strtok_r() Reentrante (Thread-Safe)
Contexto: Tokenização de Strings com strtok_r() Reentrante (Thread-Safe) no contexto de Cadeias de Caracteres,
Requisitos de Execução:
- Separar linha de arquivo CSV em múltiplos tokens usando versão thread-safe
strtok_r.
Resultado Esperado
Linha CSV dividida em tokens isolados sem variáveis estáticas globais.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_12_3_SeuNome - Envie na tarefa:
Atividade Cap 12 - Cadeias de Caracteres, <string.h> e Segurança OWASP
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
#include <string.h>
int main(void) {
char linha[] = "Carlos;Desenvolvedor;8500.00";
char *saveptr;
char *token = strtok_r(linha, ";", &saveptr);
while (token != NULL) {
printf("Token: %s\n", token);
token = strtok_r(NULL, ";", &saveptr);
}
return 0;
}
🏆 Nível 4: Desafio Corporativo
Problema 12.4 — Formatação Segura com snprintf() e Prevenção de Format String Attack
Contexto: Formatação Segura com snprintf() e Prevenção de Format String Attack no contexto de Cadeias de Caracteres,
Requisitos de Execução:
- Montar mensagem formatada com
snprintfevitando passagem direta de strings de usuário para printf.
Resultado Esperado
Format string vulnerability evitada com snprintf delimitado.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_12_4_SeuNome - Envie na tarefa:
Atividade Cap 12 - Cadeias de Caracteres, <string.h> e Segurança OWASP
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
int main(void) {
char saida[64];
const char *usuario = "admin_user";
int codigo = 1001;
snprintf(saida, sizeof(saida), "AUDIT: Usuario=%s | Codigo=%d", usuario, codigo);
puts(saida);
return 0;
}