Описание формата строки не совсем понятно, но я думаю, что могу ответить на ваш вопрос в любом случае (извлекая целые числа с буквами и добавляя (?) Их в соответствующую переменную int).
Итак, начиная с этой строки:
char * was = "3e, 6s, 1d, 3g, 22r, 7c"; // была == странная задница строка
вероятно, проще всего его токенизировать, используя strtok .
char* token = strtok (was,",");
while (token != NULL) {
assign(token); // first token is 3e, second 6s etc...
token = strtok (NULL, ",");
}
Теперь вы можете использовать sscanf , чтобы найти число и букву.
void assign(char* token) {
char letter;
int number;
if (0 != sscanf(token, "%d%c", number, letter)) {
// the first token produces letter 'e' and number '3'
// now you can switch on letter and add number
// to the proper variable in each case
} else {
//matching failure!!
}
}
Что касается других причуд с вашим форматом строки (отдельные контейнеры и плавающий элемент в конце (другие ??)), вы можете обрабатывать их аналогичными способами. Просто думайте об этом, как о луковице, прокладывайте формат слоя за слоем, пока не доберетесь до комбинации букв и цифр.
Кроме того, любые ошибки формата будут обнаружены как минимум при вызове sscanf.