¿Cómo analizo los campos en una cadena separada por comas usando sscanf mientras se admiten campos vacíos?

Tengo una cadena separada por comas que puede contener campos vacíos. Por ejemplo:

1,2,,4

Utilizando un básico

sscanf(string,"%[^,],%[^,],%[^,],%[^,],%[^,]", &val1, &val2, &val3, &val4);

Obtengo todos los valores antes del campo vacío y los resultados inesperados del campo vacío en adelante.

Cuando elimino la expresión para el campo vacío de sscanf (),

sscanf(string,"%[^,],%[^,],,%[^,],%[^,]", &val1, &val2, &val3, &val4);

todo funciona bien

Ya que no sé cuándo voy a obtener un campo vacío, ¿hay alguna forma de volver a escribir la expresión para manejar los campos vacíos con elegancia?

Respuestas a la pregunta(10)

Su respuesta a la pregunta