In addition to using a character class to include the characters to read as a string, you can also use the character class to exclude digits which would allow you to scan forward in the string until the next digit is found, taking all characters as your name and then reading the digits as an integer. You can then determine the number of characters consumed so far using the "%n" format specifier and use the resulting number of characters to offset your next read within the line, e.g.
        char namax[MAXNM],
            *p = buf;
        int hargax,
            off = 0;
        while (sscanf (p, "%24[^0-9]%d%n", namax, &hargax, &off) == 2) {
            printf ("%-24s %d\n", namax, hargax);
            p += off;
        }
Note how the sscanf format string will read up to 24 character that are not digits as namax and then the integer that follows as hargax storing the number of characters consumed in off which is then applied to the pointer p to advance within the buffer in preparation for your next parse with sscanf.
Putting it altogether in a short example, you could do:
#include <stdio.h>
#define MAXNM   25
#define MAXC  1024
int main (void) {
    char buf[MAXC] = "";
    while (fgets (buf, MAXC, stdin)) {
        char namax[MAXNM],
            *p = buf;
        int hargax,
            off = 0;
        while (sscanf (p, "%24[^0-9]%d%n", namax, &hargax, &off) == 2) {
            printf ("%-24s %d\n", namax, hargax);
            p += off;
        }
    }
}
Example Use/Output
$ echo "car1900food2900ram800" | ./bin/fgetssscanf
car                      1900
food                     2900
ram                      800