mixed *xscanf(string str, string format) { array ret; ret = allocate(50); sscanf(str, format, ret...); return ret[.. member(ret, null) - 1]; } Does this seem to be the best way to handle this? I feel dirty arbitrarily limiting it to 50.