¿Cómo identificar un separador de campo de scanf?

Necesito leer un archivo de texto que tenga nombres con números como abajo.

rENLAg:12182 TgAlKd:19773 SSqUpz:16466 QYStPh:4113 CodNhz:28920 SgoIGz:25343 

Necesito separar las letras de los números.fscanf solo identifica espacios, pero no otros separadores de campo. Por lo tanto, ¿cómo lo hago?

Una solución sería utilizar conjuntos de escaneo (consulte la entrada para el especificador de conversión [set] en la tabla de especificadores de formato ):

 char buf[7]; int i; /* Check result of fscanf(), which returns the number of assignments made, to ensure both 'buf' and 'i' were assigned values. */ if (fscanf(fp, " %6[^:]:%d", buf, &i) == 2) { } 

donde " %6[^:]" significa omitir cualquier espacio en blanco inicial (por ejemplo, el carácter de nueva línea de la lectura anterior) y leer hasta el primer carácter, pero sin incluirlo, pero no más de 6 caracteres (para evitar la saturación del búfer) .