Problemas con Char*

Por favor, una ayudita ... tengo ésto:

char* dayOfWeek;

...

skip = strtok(DateTimeBuffer, ":");
  dayOfWeek = strtok(NULL, " ");

En dayOfWeek se almacena "Sun", p.e.

y quiero hacer ésto:

Si dayOfWeek == "Sun", entonces dayOfWeek = "Domingo"

Dos días visitando páginas y estoy como al principio.
Gracias por vuestro tiempo y paciencia.

Moderador:
Por favor, lee las Normas del foro.
Edita tu título de forma inmediata.
Vienes posteando hace tiempo y sabes que todo código va con etiquetas.
Edita tambien.
También sabes que una consulta no es un proyecto.

El código no está completo, y créenos que no queremos tú código para nada, pero no tenemos cómo adivinar qué estás haciendo.
Vemos una parte donde tienes la variable skip y luego ya no volvemos a saber de ella.
Usas strok para separar la cadena pero según el condicional que planteas dayofweek sólo se tokeniza 1 vez.

¿Has mirado la documentación de la función strok? El título cámbialo por algo más respetuoso, porque el problema ni es de char*, ni es de strok. Es tuyo.

Primero: Recordar que una colección de char no es un String
Segundo: Cuando se usa una función nativa, si no se entiende bien, ir a los ejemplos de la documentación, por ejemplo: strok
Tercero no podemos usar el operador == para comparar variables de diferentes en plan comparar un array con un string, y por tanto una colección de char no es un String. ¿Hay alguna función que nos permita comparar? Sí, y basta con poner en google "Arduino char* compare" y el primer hilo es de este foro
compare char array
Cuarto si tenemos dudas, no ser bastos en los títulos, el título del hilo es importante para quienes realizan futuras búsquedas y los errores son siempre humanos, no del lenguaje.
Quinto. Si pones todo tu código se pueden ver los errores, de la otra forma es un adivina adivinanza.

Ahora el ejemplo:

char dayOfWeek[] = "Sun:Sat:Fri:Thu:Wed:Tue:Mon";

void setup(){
    Serial.begin(9600);
    char *day = NULL;
    day = strtok(dayOfWeek, ":");
    
    while(day != NULL){
      Serial.println(day);

      if(strcmp(day, "Sun") == 0){
        Serial.println("Domingo");
      }
      day = strtok(NULL, ":"); 
    }
}

void loop(){}

Dos días para resolver esto indica que no estás leyendo la documentación. Estás copiando código sin entender. Sería conveniente que cuando programamos entendamos los fundamentos.
En saludo.

En efecto, hace tiempo que posteo, exactamente desde Sep. 2017, 8 posts con éste, a 1,33333 posts/año, no me parece que sea motivo para tamaña bronca.
Posteo más a menudo en foros en Inglés, en los que se muestran más comprensivos con los novatos o, con los ancianos, que es mi caso. Por error, he posteado en el foro Español, no volverá a suceder.

  • Fíjate la diferencia entre los hilos (y no me refiero al idioma)
  • Titulaste esto AQUÍ inicialmente cómo: "Char* y la madre que lo..."
  • El moderador obviamente te pidió que lo cambiases.
  • En el hilo en inglés en cambio pusiste: " How to split a char[40] in ints and strings"... Y no es la única diferencia, allí pusiste el string base que tokenizar.
  • Otra diferencia es que diste por válida una solución con strok que hace lo mismo que lo que te mostramos pero tú prefieres una cascada de variables char en vez de usar un bucle (los arrays no existen para muchos)*

Ahora nos comentas que eres novato y anciano y que en el foro en inglés fueron más comprensivos y haces ver que aquí no vas a postear más.

  • Es extraño que un anciano entre a un foro y titule así. Entro poco al foro pero yo no he visto esto NUNCA.
  • Si faltas el respeto en un hilo en inglés no te habrían respondido igual de bien.
  • Que el moderador te diga que cumplas las normas no es echarte la bronca.

Y esto tampoco es una bronca ^^ Es explicarte que hay diferencias entre hilos, que has cogido la respuesta más larga e innecesaria de variables cómo la opción buena y que lo que has hecho de usar varios hilos con la misma duda es DOUBLE POST y va contra las normas también... Pero claro lo querías hecho a la de YA. No lo pusiste en Chino de milagro, pero cómo no te gustó que te pidieran seguir las normas, el foro en español es malo, el inglés es bueno y comprensivo.

Lamento tanto el título como mi incapacidad para presentar en Español una pregunta simple, al parecer, o soy más hábil en Inglés que en Español, lo cuál me congratularía o los foreros angloparlantes son más empáticos.
En cualquier caso, te agradezco sobremanera las explicaciones aunque, lamentablemente para mí, ya las había seguido con nulo éxito.
Te incluyo el extracto de mi "código" al que llego con una respuesta de "pool.ntp.org": +CIPSNTPTIME: Sun May 01 10:18:23 2022

// Variables para Fecha y Hora
char* skip;
char* dayOfWeek;
char* monthName;
char* dayNum;
char* hour;
char* minute;
char* second;
char* year;

// Extracción de Fecha y Hora
uint8_t get_DateTime_format()
{
  status = false;
  skip = strtok(DateTimeBuffer, ":");
  dayOfWeek = strtok(NULL, " ");
  monthName = strtok(NULL, " ");
  dayNum = strtok(NULL, " ");
  hour = strtok(NULL, ":");
  minute = strtok(NULL, ":");
  second = strtok(NULL, " ");
  year = strtok(NULL, "");
status = !status;
return status;
}

// Formateado de Fecha y Hora
void get_DateTime_format();
{
   if(status != true)
   {  
      Serial.println("FAIL");
      goto ATCIPSNTPTIME; //Repetición
   }else{
      Serial.println("PASS");

   // Solo para DEBUG
   Serial.print(dayOfWeek); Serial.print(", "); Serial.print(dayNum); 
   Serial.print("/"); Serial.print(monthName); Serial.print("/"); Serial.print(year); 
   Serial.print(" "); Serial.print(hour); Serial.print(":"); Serial.println(minute);

   }
// Deseaba conseguir el formato siguiente:
// Domingo, 01/05/2022 - 10:18:23
	if(strcmp(dayOfWeek, "Sun") == 0){
            Serial.println("Domingo");
         }
    if(strcmp(monthName, "May")==0{
           Serial.println("05");
    }
 // Lo anterior funciona pero quería conservar 'dayOfWeek' y 'monthName' "corregidas", para ulteriores  controles. Esto será suficiente.   
} 

Supongo que con "mi código" te referías a lo que acabo de poner porque el resto de código, amén de unas 500 líneas es cualquier cosa menos un código ejemplar.
Creo que tu respuesta anterior será suficiente y vuelvo a pedir disculpas por mi torpeza expresándome en Español.
Una vez más, gracias por tu tiempo y atención.

Está claro que tú tienes muchas dificultades de comprensión. De los primeros 5 puntos, uno, he pedido disculpas por el título, dos, todavía no te has enterado que yo no tengo formación para ninguna preferencia, utilizo lo que encuentro o las soluciones que me ofrecen y tres, del resto tan solo puedo decirte que, clara y meridianamente, hoy te has levantado con la gorra a cuadros, si una duda tan simple como la expresada os ha producido tanto stress tan solo teníais, tú y el moderador, que ignorarme.
Y sí, está será la última vez que me dirija a este foro en Español, donde una simple pregunta se convierte en un diálogo de besugos.
Que tengáis un buen día.

Edito: @Breixo. En fin, debido a tu respuesta he tenido que eliminar el código de 11 líneas. Usuarios así... Más adelante veré cómo poner el ejemplo fuera de tu hilo si el moderador me lo permite.
Te acabas de quedar sin una solución optimizada por seguir siendo irrespetuoso.

Querido Breixo, se te ha indicado que tu título original era grosero y lo modificaste. En el hilo de inglés no lo fuiste. Aquí no pusiste ni el texto a tokenizar.
Te repito que no puedes ir abriendo el mismo hilo repetidos aquí y allá a la desesperada para que alguien te resuelva la duda. Debes tener paciencia. Aceptaste la opción que te dieron, lo cual genial, pero sin optimizar. Y el código que te puse muchísimo más corto me he visto en la obligación de borrarlo dadas tus respuestas. Yo estoy muy tranquilo, enserio. No necesito dos días ni me estreso para programar un código de 11 líneas (contando los saltos de línea). Sólo que es desagradable cuando alguien ya va titulando así e intenta dejar al foro en Español de malas formas sólo porque te pidieron seguir las normas.

Dejo una opción con un pattern para acortar las líneas de código con respecto al dado en el foro de habla inglesa con la intención que sirva a terceros más que al autor de la duda.

char *dayOfWeek = "+CIPSNTPTIME:Tue Apr 05 11:31:55 2022";
char *pattern = ":   :: ";

void setup(){
	Serial.begin(9600);
    char *name = NULL;
 	name = strtok(dayOfWeek, &pattern[0]); //Nótese el & para no tener problemas con char*
    for(byte i = 0; i <= strlen(pattern); i++){
		Serial.println(name); //Aquí podríamos poner los valores en un array o struct
        name = strtok(NULL, &pattern[i]); 
	}
}
void loop(){}

Yo no creo que el foro inglés sea mejor que el español, otra cosa son las exigencias de algunas personas que hacen que muchos programadores no entren a este foro.

Para que el OP recapacite de cara al futuro re-lee las normas del foro respecto del
punto 10. Lenguaje amable y descriptivo y
punto 13. Modales dentro del foro.

13. Modales dentro del foro
Se educado

Un poco de cortesía y educación te asegura éxito. Incluso si crees que tu pregunta se ha respondido antes, o no le encuentras sentido, trata de preguntar educadamente. Recuerda que muchos miembros del foro con un gran número de post en su marcador leen la misma pregunta cada cierto tiempo, y podrían aburrirse si pruebas con tu pregunta que no te has tratado de solucionar tu problema más seriamente primero. Entenderás que si respondes de manera amable y sin exagerar, que las personas se mantendrán a tu lado y probablemente resuelvas tu problema pronto. Los insultos personales directos o indirectos no son aceptables, mantente al margen del tema.

Que conste que por este hilo
forum.arduino.cc/t/how-to-split-a-char-40-in-ints-and-strings/981575
que no había advertido, te correspondería una sanción por doble posteo además de la falta de respeto que dejé pasar con el título.