
Untitled
By: a guest on
Apr 28th, 2012 | syntax:
None | size: 1.30 KB | hits: 15 | expires: Never
sscanf optional column
sscanf(currentline[i], "%[^t] %[^t] %11 [^n]", aIDVar, someDataVar, furtherDatVar) == 3
#include <stdio.h>
static void testFn (char *str) {
int var1, var2, var3;
if (sscanf(str, "%d %d %d", &var1, &var2, &var3) != 3) {
var3 = 42;
if (sscanf(str, "%d %d", &var1, &var2) != 2) {
var1 = var2 = var3 = -1;
}
}
printf ("[%-10s] -> %3d %3d %3dn", str, var1, var2, var3);
}
int main (void) {
testFn ("");
testFn ("1");
testFn ("1 2");
testFn ("1 2 3");
testFn ("1 2 3 4");
return 0;
}
[ ] -> -1 -1 -1
[1 ] -> -1 -1 -1
[1 2 ] -> 1 2 42
[1 2 3 ] -> 1 2 3
[1 2 3 4 ] -> 1 2 3
static void testFn (char *str) {
int quant, var1, var2, var3;
if ((quant = sscanf(str, "%d %d %d", &var1, &var2, &var3)) != 3)
if (quant == 2)
var3 = 42;
else
var1 = var2 = var3 = -1;
printf ("[%-10s] -> %3d %3d %3dn", str, var1, var2, var3);
}
void input(char *str){
int x, vars[3];
char *sp;
for(x=0,sp=strtok(str, " t");x<3&&sp; x++,sp=strtok(NULL, " t")){
vars[x] = atoi(sp);
}
if(x<3) //didn't read enough
//..deal with it
if(sp) //your optional field is present
//deal with that.
}