sscanf is very similar to fscanf.
Code:
#include <stdio.h>
struct record
{
int i;
char first [ 20 ];
char last [ 32 ];
char c;
double d;
int j;
};
int main(void)
{
const char text[] = "123:Firstname:Lastname01:H:40.1:1";
struct record entry;
if ( sscanf(text, "%d:%19[^:]:%31[^:]:%c:%lf:%d",
&entry.i, entry.first, entry.last,
&entry.c, &entry.d, &entry.j) == 6 )
{
printf("entry.i = %d\n", entry.i);
printf("entry.first = %s\n", entry.first);
printf("entry.last = %s\n", entry.last);
printf("entry.c = %c\n", entry.c);
printf("entry.d = %f\n", entry.d);
printf("entry.j = %d\n", entry.j);
}
return 0;
}
/* my output
entry.i = 123
entry.first = Firstname
entry.last = Lastname01
entry.c = H
entry.d = 40.100000
entry.j = 1
*/