![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Manejar variable
Buenas:
Me da error de este código: Error C4996 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. El código es en C++ nativo: Código:
#include <iostream> #include <windows.h> // Para mostrar texto en el título de la ventana. #include <stdio.h> #include <string.h> using namespace std; int main() { char lectura[50] = { 0 }; // Supongamos que has recibido datos y n es el número de bytes leídos. int n = 20; // Por ejemplo, supongamos que leíste 20 bytes. strncpy(lectura, "ON - Led encendido.", sizeof(lectura) - 1); // Simulando la lectura. lectura[n] = '\0'; // Asegúrate de terminar la cadena. // Ahora puedes comparar la cadena. if (strcmp(lectura, "ON - Led encendido.") == 0) { cout << "Recibido: " << lectura << endl; } else { cout << "No se recibió el mensaje esperado." << endl; } return 0; } Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
#2
|
|||
|
|||
has probado a usar strcpy ? (pero recuerda que strcpy acepta puntero a char solamente)
Código:
strcpy(lectura, "ON - Led encendido."); // Simulando la lectura. |
#3
|
|||
|
|||
lo que no entiendo muy bien es porque haces esto:
Código:
lectura[n] = '\0'; // Asegúrate de terminar la cadena. |
#4
|
||||
|
||||
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. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Asignar el valor de una variable de php a una variable js que puede no existir | jandroruiz | PHP | 5 | 04-03-2013 12:23:02 |
Introducir una variable en una variable obtenida de un formulario | jandroruiz | PHP | 4 | 28-02-2013 21:56:35 |
Variable en Atributo [Edit(Variable).Text] | martini002 | Varios | 9 | 21-06-2012 17:08:05 |
manejar un archivo *.bin | Apetelinau | Varios | 0 | 05-06-2007 13:31:47 |
variable dentro de una variable | molinero1 | Varios | 3 | 23-04-2007 12:44:48 |
![]() |
|