### Navigation

- index
- next |
- previous |
- NEURON 7.3 documentation »
- Strings »

# String Parsing (sscanf)

`sscanf`()
  Syntax:
    `num = sscanf("string", "format", args)`
  Description:

    A subset of the c stdio sscanf function. The formats understood are %s, %[...], %c, %lf, %f, %d, %i, %o, %x, along with numbers and the * character. Explicit strings in the format are also understood. A great deal of error checking is done to make sure the args match the format string. The function returns the actual number of args that are assigned values.

    Note that %lf is always preferred to %f since the latter truncates to floating point accuracy. Hence

        x=0
        sscanf("0.3","%f",&x)
        print x
        prints the value
        0.30000001

  Example:

  >     strdef s
  >     double x[20]
  >     y=0

  >     sscanf("this is a test\n", "%s", s)
  >     print s

  >     sscanf("this is a test\n", "%[^\n]", s)
  >     print s

  >     sscanf("this is a test\n", "%*s%s", s)
  >     print s

  >     sscanf("this is a test\n", "%2s", s)
  >     print s

  >     sscanf("this is a test\n", "%10s", s)
  >     print s

  >     sscanf("this is a test\n", "%*3s%s", s)
  >     print s

  >     sscanf("this is a test\n", "%*s%s", s)
  >     sscanf("0xff 010 25", "%i%i%i", &x[0], &x[1], &x[2])
  >     print x[0], x[1], x[2]

  >     double x[20]
  >     sscanf("ff 10 25", "%x%o%d", &x[0], &x[1], &x[2])
  >     print x[0], x[1], x[2]

  >     sscanf("50.75", "%d.%d", &x[0], &x[1])
  >     print x[0], x[1]

  >     sscanf("30.987654321", "%f", &y)
  >     printf("%20.15g\n", y)

  >     sscanf("30.987654321", "%lf", &y)
  >     printf("%20.15g\n", y)

  >     sscanf("A", "%c", &y)
  >     printf("%c\n", y)

  >     sscanf("1 2 3 4 5 6 7 8 9 10", "%f%f%f%f%f%f%f%f%f%f%f", &x[0], &x[1], &x[2],\
  >         &x[3], &x[4], &x[5], &x[6], &x[7], &x[8], &x[9], &x[10], &x[11], &x[12])
  >     print "should only read ten of the following"
  >     for i=0,12 print i, x[i]

  >     print "error tests"

  >     execute1("sscanf(\"string\", \"%\", s)")
  >     execute1("sscanf(\"string\", \"%*\", s)")
  >     execute1("sscanf(\"string\", \"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\", &x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x)")
  >     execute1("sscanf(\"string\", \"%*5\", s)")

  >     execute1("sscanf(\"string\", \"%l[st]\", s)")
  >     execute1("sscanf(\"string\", \"%[\", s)")
  >     execute1("sscanf(\"string\", \"%[]\", s)")
  >     execute1("sscanf(\"string\", \"%[^]\", s)")
  >     execute1("sscanf(\"string\", \"%ls\", s)")
  >     execute1("sscanf(\"string\", \"%lc\", &y)")
  >     execute1("sscanf(\"string\", \"%5c\", &y)")
  >     execute1("sscanf(\"string\", \"%q\", &y)")

  >     execute1("sscanf(\"string\", \"%s\")")

  >     execute1("sscanf(\"string\", \"%s\", &y)")
  >     execute1("sscanf(\"25\", \"%d\", s)")

  >     execute1("sscanf(\"string\", \"%c%c%c%c%c%c%c%c%c%c%c%c%c\", &x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x,&x)")

### Navigation

- index
- next |
- previous |
- NEURON 7.3 documentation »
- Strings »