ForHosting KIT · Ferramentas para dev

Escapador formato printf

“Progress: 50% complete” vira “Progress: 50%% complete”, e assim o printf imprime a porcentagem em vez de tratá-la como conversão. Quebras de linha, tabulações e barras invertidas viram \n, \t e \\, e o desescape as traz de volta. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Texto
Progress: 50% complete next step
Modo de cálculo
Escape
Você obtém
Resultado
Progress: 50%% complete\nnext step
Comprimento
34
Quantidade de porcentagens
1
Quantidade de escapes
1

As strings de formato da família printf tratam um sinal de porcentagem isolado como o início de uma especificação de conversão, de modo que texto livre que contenha uma porcentagem—rótulos de progresso, notas de moeda, modelos de log—irá falhar, ser mal interpretado ou consumir os argumentos errados a menos que cada porcentagem literal seja duplicada para %%. Ao mesmo tempo, os corpos de formato costumam viver dentro de literais de código-fonte ou arquivos de configuração em que quebras de linha, tabulações e barras invertidas devem ser escritas como escapes com barra. Este escapador de formato printf transforma texto simples em um corpo de formato seguro duplicando cada porcentagem e reescrevendo caracteres de controle e barras como \\ , \n, \r, \t ou \xHH, e reverte o mesmo mapa quando voce precisa recuperar os caracteres originais.

Como funcionam a duplicação da porcentagem e os escapes com barra no printf

No printf de C, em iostreams de C++ que aceitam strings no estilo printf, na formatação antiga com % do Python e em muitas bibliotecas de log, um caractere de porcentagem inicia uma conversão: %s, %d, %.2f, %.*s e formas posicionais como %1$s começam todas com um único porcentagem. Para imprimir uma porcentagem literal voce deve escrever dois seguidos—%%—para que o formatador emita um % e não procure uma letra de conversão.

Esquecer essa regra é um erro clássico: uma mensagem como "done 50%" vira erro de formato ou rouba o próximo argumento. Esta capacidade aplica ambas as camadas de forma determinística. No modo escape percorre cada caractere, substitui cada % por %%, transforma barras e os controles usuais no escape portátil mais curto e deixa texto imprimível comum inalterado.

No modo unescape reduz %% de volta a um único porcentagem, expande as sequências com barra suportadas, deixa um porcentagem isolado (início de uma conversão real) como está para decodificar modelos mistos, e rejeita barras finais, sequências \x incompletas, dígitos não hex e escapes de letra desconhecidos que seriam indefinidos em uma leitura estrita.

O que voce envia e o que recebe de volta

Envie um campo de string obrigatório chamado text e um campo opcional mode. O modo escape converte texto simples em um corpo de formato seguro para printf armazenado em result: cada porcentagem é duplicada, barras viram \\ e controles viram \n, \r, \t ou \xHH. O modo unescape reverte essas sequências e devolve a string recuperada em result.

Falhas de validação não consomem saldo pré-pago. Verificações clássicas incluem escapar uma linha de progresso com porcentagem isolada e quebra de linha, desescapar um corpo que usa %% e \t, fazer ida e volta de uma string que já contém barras, e rejeitar uma string que termina com barra solta.

Onde um escapador de formato printf vale a pena

Geradores de código que emitem modelos de log, catálogos de localização e mensagens de assert para C, C++ ou runtimes compatíveis com printf devem escapar cada campo de texto livre antes de escrevê-lo em uma string de formato, ou um único porcentagem em um nome de produto corromperá o formato e quebrará o build ou falhará em tempo de execução.

Equipes de firmware embarcado e drivers de dispositivo colam dumps de protocolo e mensagens de operador que já contêm %% e sequências \n e precisam de um caminho de unescape que falhe de forma ruidosa em \xHH truncados em vez de inventar bytes. Sites de documentação e livros de receitas que mostram exemplos de printf para copiar e colar precisam de um caminho de escape confiável para que amostras do usuário permaneçam corpos de formato válidos.

Pipelines de QA e CI comparam vetores dourados de escape e unescape entre hosts para que um porcentagem literal seja sempre %% e uma quebra de linha sempre \n. Autores de material didático que ensinam a sintaxe de printf querem exemplos que mencionem a duplicação de porcentagem de forma explícita, que é a intenção de busca que esta landing captura.

Se voce precisa de literais de string C completos, escapes JavaScript, entidades HTML ou codificação percentual de URL, trate-os como intenções e landings separadas em vez de sobrecarregar esta página do escapador de formato printf.

Corpos de formato printf seguros em código gerado

Escape títulos, rótulos de progresso e mensagens de operador de texto livre antes de escrevê-los em strings de formato no estilo printf para que cada porcentagem literal se torne %%.

Vetores dourados para testes unitários de strings de formato

Faça ida e volta de mensagens de amostra por escape e unescape no CI para que a duplicação de porcentagem e escapes de controle permaneçam estáveis entre hosts e toolchains.

Por que o printf precisa que os sinais de porcentagem sejam duplicados?

Um único % inicia uma conversão como %s ou %d. Escrever %% emite uma porcentagem literal e impede o formatador de consumir argumentos ou falhar por conversão ausente.

Posso escapar e desescapar?

Sim. Defina mode como escape (padrão) para codificar texto simples em um corpo seguro para printf, ou mode como unescape para reverter a duplicação de porcentagem e os escapes com barra suportados.

O que acontece com um % isolado ao desescapar?

Ele é deixado como está para que conversões reais como %s permaneçam intactas.

Quanto custa?

A ferramenta do navegador é gratuita e roda localmente.

O que acontece se uma sequência de escape estiver malformada?

O desescape para com uma mensagem clara em vez de adivinhar. Uma barra invertida no final, um \x incompleto, um dígito que não é hexadecimal ou uma letra desconhecida depois da barra são recusados, e nenhum byte pela metade chega ao resultado.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/enc/printf-escape

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/enc/printf-escape \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Progress: 50% complete\nnext: %s"}'
{
  "text": "Progress: 50% complete\nnext: %s"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.printf_escape",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

O unescape entende %% e as formas com barra listadas, deixa intactos os sinais de porcentagem isolados que introduzem conversões reais como %s ou %d, e falha imediatamente com invalid_input em barras finais, escapes hex incompletos ou letras de escape desconhecidas em vez de inventar lixo semidecodificado.

Como funcionam a duplicação da porcentagem e os escapes com barra no printf

Separadamente, quando a mesma string é embutida em código-fonte ou configs semelhantes a JSON, uma quebra de linha bruta costuma ser ilegal ou incômoda, então os autores escrevem \n para avanço de linha, \t para tabulação, \\ para uma única barra invertida e às vezes \xHH para outros bytes de controle. O caminho é trabalho puro de strings sem rede, sem sementes aleatórias e sem carimbos de relógio, de modo que entradas idênticas sempre produzem JSON idêntico. O preço de chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item, e falhas de validação não consomem saldo pré-pago.

O que voce envia e o que recebe de volta

Quando mode é omitido, escape é o padrão, de modo que um único payload ainda faz trabalho útil. A resposta ecoa mode e o text original, depois inclui result, o comprimento de result, percent_count (quantos sinais de porcentagem foram duplicados no escape ou desdobrados no unescape, incluindo a forma opcional \%) e escape_count (quantas transformações no estilo barra foram aplicadas). Text ausente, objetos que não são string, valores de mode não suportados, strings maiores que o máximo documentado, barras finais, escapes hex incompletos, dígitos não hex após \x e letras de escape desconhecidas falham com invalid_input e uma mensagem clara em inglês. O preço da API em sucesso é a base publicada de US$ 0,002 por item.

Onde um escapador de formato printf vale a pena

Como esta capacidade é um motor de parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo.

Decodificar modelos de formato a partir de logs e fixtures

Desescape corpos no estilo printf que usam %% e escapes com barra de volta a texto legível, com falhas rígidas em sequências de escape incompletas ou ilegais.

O que acontece se uma sequência de escape estiver malformada?

Unescape falha com invalid_input, indicando a posição e a sequência ruim (por exemplo barra final, \xHH incompleto ou escape de letra desconhecido). Nada é cobrado por falhas de validação.

Ver a documentação completa do KIT →