All the examples of sscanf that I encountered use the %s, %d etc.
the sscanf("[10,20,30,40]","%s, ... " does not work.
I created the following test program
Code:
#include <stdio.h>
int main(int argc,char *argv[])
{
int rc;
char field1[1023];
char field2[1023];
char field3[1023];
char field4[1023];
char field5[1024];
char field6[1024];
char field7[1024];
char field8[1024];
if(argc<2)
{
printf("%s sscanf workare format \n",argv[0]);
printf("Scan up to 8 fields and show results. \n\n");
return 0;
}
*field1=0;
*field2=0;
*field3=0;
*field4=0;
*field5=0;
*field6=0;
*field7=0;
*field8=0;
printf("rc=sscanf(\"%s,%s\");\n",argv[1],argv[2]);
printf("argv[1]=[\"%s\"] argv[2]=[\"%s\"]\n",argv[1],argv[2]);
printf("Scan up to 8 fields and show results. \n\n");
rc=sscanf(argv[1],argv[2],&field1,&field2,&field3,&field4,&field5,&field6,&field7,&field8);
printf("field1=\"%s\"\n",field1);
printf("field2=\"%s\"\n",field2);
printf("field3=\"%s\"\n",field3);
printf("field4=\"%s\"\n",field4);
printf("field5=\"%s\"\n",field5);
printf("field6=\"%s\"\n",field6);
printf("field7=\"%s\"\n",field7);
printf("field8=\"%s\"\n",field8);
printf("Scan rc=%d\n",rc);
return 0;
}
I then tried
scanfTest [12,23,1,3] "[%[^','],%[^','],%[^','],%[^[']']] "
It returns
Code:
argv[1]=["[12,23,1,3]"] argv[2]=["[%[^','],%[^','],%[^','],%[^[']']] "]
Scan up to 8 fields and show results.
field1="12"
field2="23"
field3="1"
field4="3]"
field5=""
field6=""
field7=""
field8=""
Scan rc=4
This small utility allowed me to test sscanf with various string arguments.
How do I easily (using sscanf() eliminate the closing ] glued to field 4 ?