Duda con método EEPROM.put

Buen día a todos, como el título lo indica tengo una duda con el método put de la EEPROM, si yo tengo un array char de 50 elementos y el texto solo ocupa 10 elementos, los otros 40 se rellenan con 0 o con NULL? La duda va en que si p ej tengo un texto "abcdefghij" y lo grabo en EEPROM como char[50] y luego tengo otro texto "abcd" y vuelvo y lo grabo como char[50], al final voy a tener abcd? o me va a sobrescribir los primeros 4 bytes y el resto van a quedar sin cambios.

Mira este hilo, tal vez te aclare el panorama y puedas usar su ejemplo para ver por tu cuenta que ocurre.

Working with EEPROM and arrays

Gracias por responder, intenté usar el código que está en ese post pero no me deja compilarlo. Me muestra el siguiente mensaje de error: "invalid conversion from 'char*' to 'int' [-fpermissive]" en la línea "byte val = EEPROM.read(ptr + i);" y no sé cómo corregirlo.

Error o warning?

Dice WARNING o sea advertencia

warning: invalid conversion from 'int' to 'const void*' [-fpermissive]
edump(128, 32);

Dice error y detiene la compilación.

No entiendo exactamente el sentido de la pregunta, porque depende de muchas cosas lo que quede en el resto de caracteres tras la cadena que grabes. Si lo que quieres almacenar es una cadena, es indiferente lo que haya después, siempre que hubiera sitio suficiente para dicha cadena. Supongamos que defino un array de caracteres:

char micadena[50];

Esa declaración, por si sola sólo reserva un espacio de 50 bytes de memoria para el array micadena. No está establecido que esté lleno de ceros ni nada, así que no hagas suposiciones en ese aspecto. Si yo imprimo en ese espacio de memoria una cadena, por ejemplo:

sprintf(micadena, "Probando");

Ahora sé que micadena contiene los caracteres P,r,o,b,a,n,d,o y null. De ahí en adelante, no sabemos qué puede contener. Sin embargo sabemos que las funciones de cadena se detienen (dan por terminada la cadena) cuando encuentran el null, así que si hacemos un print(cadena), se va a imprimir la cadena "Probando", pues inmediatamente encuentra el carácter null y obvia lo que venga después.
Si a continuación hago una sobrescritura en la misma posición:

sprintf(micadena, "Hola");

Lo que podemos asegurar que los caracteres definidos por nosotros que contendrá cadena son H,o,l,a,null,n,d,o,null. Aunque aparentemente tenemos una cadena "suciia", si imprimimos nuevamente micadena, la salida será "Hola", pues después hay un terminador de cadena. Resumiendo, asignar una cadena entre comillas no son sólo los caracteres que vemos entre las comillas, sino que agrega un carácter extra terminador (null) después. En la EEPROM podemos entender funcionamiento similar.
A partir de aquí, si quieres afinar más el sentido de tu consulta podemos intentar aclararte algo más.

Muchas gracias era justamente la duda que tenía. No sabía si debía primero "borrar" el contenido de la EEPROM para escribir el nuevo valor pero ya con eso quedó más que claro. Gracias.

Igualmente con lo que te di lo deducias por tu cuenta..

Si gracias también.

No era por las gracias, era porque tenias los elementos según mi criterio para entenderlo por tu cuenta con prueba/error, algo que te queda muy bien grabado.