You will have to be more specific. What isn't working, what have you tried, etc.? It should be the same signature as a printf, so something like this should work:
proc scanf(formatstr: cstring) {.importc: "scanf", varargs, header: "<stdio.h>".}
Maybe being explicit here will help. So,
proc scanf*(fmt: cstring): int {.importc, varargs.}
var a, b, c: cint
echo scanf("%d %d %d", a.addr, b.addr, c.addr) # 3
echo a # first 3 cints that
echo b # user put into stdin
echo c
Save the above in a file called scan.nim. Then
echo 1 2 3 | nim r scan
produces four lines ("3\n1\n2\n3\n") while
echo a b c | nim r scan
produces four lines of zeros ("0\n0\n0\n0\n") since "a" etc. do not parse as decimal integers and since Nim inits them to zero by default (unless you tag the names with the {.noInit.} pragma or give them some other default).
This said, you should also know that the Nim std lib has std/strscans which is nicer in many ways except for porting legacy input parsing: https://nim-lang.org/docs/strscans.html
I am interested in building something useful with nim, please could you make a suggestion.
The best option is to find something that bothers you in your daily routine. And try to fix, improve or to automate it.
If you're still unsure, you can pick one of problems from public lists:
Also, Python folks often recommend free books by Al Sweigart: https://inventwithpython.com/
While it's mostly tutorials for Python, they also have cool little projects you can build either with nimpy or in pure Nim. In particular, look at the "Big book of small Python projects" - https://inventwithpython.com/#bigbookpython