sprintf é uma função variável, geralmente tem problemas quando usada e, enquanto houver um problema, geralmente é um erro de acesso à memória que pode causar o travamento do programa.
A seguir está um breve resumo dos erros comuns em sprintf:
1. Buffer overflow: O comprimento do primeiro parâmetro é muito curto Solução: Aumente o comprimento do primeiro parâmetro. Ao imprimir uma seqüência de caracteres, tente especificar o número máximo de caracteres na forma de "% .ns"
char buf [5];
sprintf (buf, ":% d", 3246);
printf ("buf é% s \ n", buf);
Modifique buf para char buf [6]
2. Esqueça o primeiro parâmetro: a razão é que printf está acostumado com o hábito, e ocasionalmente esqueço
char buf [6];
sprintf (":% d", 3246);
printf ("buf é% s \ n", buf);
Mensagem de erro: erro C2664: 'sprintf': não é possível converter o parâmetro 2 de'int 'em'const char *'
3. Problemas com correspondência de parâmetro variável: geralmente esquecido de fornecer um parâmetro variável correspondente a um determinado formato de caractere, fazendo com que todos os parâmetros futuros fiquem desalinhados. Especialmente os parâmetros correspondentes a "*", todos são fornecidos?
Não atribua um número inteiro a um "% s"
char buf [100];
int a = 6;
sprintf (buf, ":% d,% s", 3246, a);
printf ("buf é% s \ n", buf);
Lembrete: a deve corresponder a% d em vez de% s
4. Existem também os seguintes erros, só posso me importar se não souber como descrevê-los. Agora dê exemplos de códigos errados e códigos corretos. Vamos ver por si mesmo ~~
Código errado
char buf [15];
char a1 [] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2 [] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
sprintf (buf, "% s% s", a1, a2); // Existem caracteres truncados, o resultado não é o que precisamos
printf ("buf é% s \ n", buf);
Código correto
char buf [15];
char a1 [] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2 [] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
sprintf (buf, "% .7s% .7s", a1, a2); // 产生 : "ABCDEFGHIJKLMN"
printf ("buf é% s \ n", buf);
Além disso, se você quiser melhorar sua capacidade de programação, aprenda a linguagem C e a programação C ++! Ultrapassagem em curva, um passo mais rápido! Posso ajudá-lo aqui ~
Compartilhamento (código-fonte, vídeo do projeto real, notas do projeto, tutorial introdutório básico)
Bem-vindos parceiros que mudam de carreira e aprendem programação, usam mais informações para aprender e crescer mais rápido do que pensar nisso você mesmo!
Aprendizagem de programação:
Aprendizagem de programação: