Num programa em C, roda em Windows ok, porém preciso disponibilizá-lo em Linux, cujo compilador gcc me devolve erro, pois sprintf_s não está implementado. Teriam algum equivalente ao sprintf_s no linux?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Num programa em C, roda em Windows ok, porém preciso disponibilizá-lo em Linux, cujo compilador gcc me devolve erro, pois sprintf_s não está implementado. Teriam algum equivalente ao sprintf_s no linux?
Olá Alberto!
No Linux, o equivalente ao sprintf_s é o snprintf. O snprintf é uma função que permite formatar uma string com base em um formato especificado, evitando problemas de buffer overflow.
A diferença principal entre o sprintf_s e o snprintf é que o snprintf recebe um parâmetro adicional, que é o tamanho máximo da string a ser escrita. Dessa forma, você evita escrever além do limite do buffer.
Aqui está um exemplo de como usar o snprintf no Linux:
#include <stdio.h>
int main() {
char str[20];
int num = 42;
snprintf(str, sizeof(str), "O número é %d", num);
printf("%s\n", str);
return 0;
}
Neste exemplo, o snprintf garante que a string não ultrapasse o tamanho máximo de 20 caracteres. Assim, você evita problemas de buffer overflow.
Bons estudos!
Obrigado Lucas.