El código mostrado en si mismo es inútil, parece tomado de un fragmento de ejemplo.
En principio muestra un buffer de cadena llamado lectura con tamaño 50.
lectura[n] = '\0' sólo sirve para asegurar que si la cadena llega a tener n caracteres, el último sea un nulo, es una exigencia de las cadenas C, pero n sebe ser menor que 50 (máximo tamaño del buffer) En este caso, asegúrate que el caracter n-1 es el último no nulo.
El error mostrado es un aviso sobre la función strncpy. Esta función realiza una copia de una cadena a otra con un número máximo de caracteres copiados o hasta el final de la cadena a copiar si no se alcanza el límite. Si ponemos un límite mayor a 50 tendremos un desbordamiento. El aviso sugiere que lo desactives o que uses la función strncpy_s que pide también el tamaño de la cadena destino y es más segura. ¿Qué compilador estás usando?
Cuando no se sabe de antemano el tamaño de la cadena buffer, es buena idea asignarle uno grande y controlar que no se desborda o asignarlo dinámicamente una vez que se conozca.
Si se supone que vas a recibir n caracteres, reserva dinámicamente un buffer de n+1 caracteres (el último debe ser cero) y usa una función tipo strncpy o strncpy_s para asegurar que no vas a sobrepasar el límite. Al terminar, recuerda liberar la memoria asignada si fue dinámica.
Saludos.
|