Solución de errores: sprintf es un pozo

1. Antecedentes

Para controlar el cristal líquido LCD1602, se deben ingresar caracteres en la matriz, por lo que se adopta la forma de sprintf, de la siguiente manera:

chardis0[16];

sprintf(dis0,"key_rt%d",key_rt);

LCD1602_ShowStr(0,0,dis0);

No hay ningún problema en la microcomputadora de un solo chip 51, pero en la microcomputadora de un solo chip stm32, se informará un error cuando se muestre y se atascará en el interior.

2. Análisis de la razón

2.1 Introducción a sprintf

La función srpintf() es muy poderosa: es más eficiente que algunas funciones de manipulación de cadenas ; y es más flexible; puede enviar el resultado deseado a la cadena especificada o como un búfer, mientras que printf solo puede enviar a la línea de comando~

Archivo de encabezado: stdio.h

Función función: formatea la cadena, escribe los datos formateados en la cadena.

Prototipo de función: int sprintf(char * buffer , const char *format, [argumento]...)

parámetro:

(1) búfer: un puntero de tipo char, que apunta al puntero de cadena escrito;

(2) formato: cadena de formato, es decir, el formato deseado en el programa;

(3) argumento: parámetro opcional, que puede ser cualquier tipo de dato;

Valor de retorno de la función: la longitud de la cadena a la que apunta el búfer;

utilidad:

(1) Formateo de cadenas digitales: en este sentido, sprintf e printf se usan de la misma manera, pero las posiciones que se imprimirán son diferentes. El primero imprime en la cadena de búfer y el último imprime en la salida estándar, por lo que sprintf puede también se puede usar para convertir todo el tipo se convierte en una cadena, que es más eficiente y simple que itoa~ Por ejemplo: sprintf(buffer, "%d", 123456); después de la ejecución, el búfer apunta a la cadena "123456"~

(2) Caracteres de conexión:

Sin embargo, solo los dos primeros parámetros de esta función son seguros y los últimos parámetros no lo son.

2.2 Soluciones

No hay una buena solución por el momento, y necesitamos profundizar en las razones detrás de esto para realizar una investigación de seguimiento.

La solución actual es usar memcpy en STM32 para empalmar.

Supongo que te gusta

Origin blog.csdn.net/weixin_51248645/article/details/130578157
Recomendado
Clasificación