¿Por qué se puede mostrar char [3] con más de 3 caracteres?

1
   char fromBluetooth[] = "zgr\r123\r";
   int name_length = 0;
    int pass_length = 0;

    while (1)
    {
        if (fromBluetooth[name_length] == '\r')
        {
            break;
        }name_length++;
    }

    char ssid_determined[name_length];

    for (int i = 0; i < name_length; i++)
    {
        ssid_determined[i] = fromBluetooth[i];
    }

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(ssid_determined);

Este código debe dar un resultado en LCD como "zgr", pero lo que estoy obteniendo en LCD es "zgr! \ r \ r". ¿Puede alguien explicarme cómo sucede esto?

NOTA: ese objeto lcd es del tipo LiquidCrystal de Arduino.

    
pregunta Zgrkpnr

1 respuesta

9

En primer lugar, no estoy seguro de cómo declarar una matriz con una longitud especificada en el tiempo de ejecución. Este es el estándar C, ¿verdad?

Lo que probablemente esté causando su problema es que ssid_determined no está terminado en nulo. El tamaño de ssid_determined debe ser name_length + 1, y el carácter final debe ser '\ 0'.

    
respondido por el Adam Haun

Lea otras preguntas en las etiquetas