Right, here's another version. Could you please have another read through, Stephane
NOTES The GNU C library supports a non-standard extension that causes the library to dynamically allocate a string of sufficient size for input strings for the %s and %a[range] conversion specifiers. To make use of this feature, specify a as a length modifier (thus %as or %a[range]). The caller must free(3) the returned string, as in the following example: char *p; int n; errno = 0; n = scanf("%a[a-z]", &p); printf("n=%d, errno=%d\n", n, errno); if (n == 1) { printf("read: %s\n", p); free(p); } else if (errno != 0) { perror("scanf"); } else { fprintf(stderr, "No matching characters\n"): } As shown in the above example, it is only necessary to call free(3) if the scanf() call successfully read a string. The a modifier is not available if the program is compiled with gcc -std=c99 or gcc -D_ISOC99_SOURCE (unless _GNU_SOURCE is also specified), in which case the a is interpreted as a speci- fier for floating point numbers (see above). Since version 2.7, glibc also provides the m modifier for the same purpose as the a modifier. The m modifier has the follow- ing advantages: * It may also be applied to %c conversion specifiers (e.g., %3mc). * It avoids ambiguity with respect to the %a floating-point conversion specifier (and is unaffected by gcc -std=c99 etc.) * It is specified in the upcoming revision of the POSIX.1 stan- dard. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]