Comment dois-je analyser les champs séparés par des virgules chaîne à l'aide de sscanf, tout en soutenant des champs vides?

J'ai une chaîne séparée par des virgules, qui peuvent contenir des champs vides. Par exemple:

1,2,,4

À l'aide d'une base

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

Je reçois toutes les valeurs avant le champ vide, et des résultats inattendus de la zone vide à partir.

Lorsque je retire l'expression pour le champ vide de la sscanf(),

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

tout fonctionne bien.

Car je ne sais pas quand je vais avoir un champ vide, est-il un moyen de réécrire l'expression de manipuler les champs vides avec élégance?

OriginalL'auteur Belrog | 2009-10-02