#include <stdio.h>
#include <string.h>
int main(void) {
char format[20] = {0};
char buf[50] = {0};
char str[] = "Hello World! How are you?";
size_t howMuchToRead = 8;
/* Using sscanf - till whitespace or size specified */
snprintf(format
, sizeof format
, "%%%zus", howMuchToRead
); printf("Using sscanf with %%8s format :%s\n", buf
);
/* Using sscanf - read everything upto newline */
snprintf(format
, sizeof format
, "%%%zu[^\n]", howMuchToRead
); printf("Using sscanf with %%8[^\\n] format :%s\n", buf
);
/* Using precision specifier */
snprintf(format
, sizeof format
, "%%.%zus", howMuchToRead
); printf("Using precision specifier :%s\n", buf
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBtYWluKHZvaWQpIHsKCWNoYXIgZm9ybWF0WzIwXSA9IHswfTsKCWNoYXIgYnVmWzUwXSA9IHswfTsKCWNoYXIgc3RyW10gPSAiSGVsbG8gV29ybGQhIEhvdyBhcmUgeW91PyI7CglzaXplX3QgaG93TXVjaFRvUmVhZCA9IDg7CgoJLyogVXNpbmcgc3NjYW5mIC0gdGlsbCB3aGl0ZXNwYWNlIG9yIHNpemUgc3BlY2lmaWVkICovCglzbnByaW50Zihmb3JtYXQsIHNpemVvZiBmb3JtYXQsICIlJSV6dXMiLCBob3dNdWNoVG9SZWFkKTsKCXNzY2FuZihzdHIsIGZvcm1hdCwgYnVmKTsKCXByaW50ZigiVXNpbmcgc3NjYW5mIHdpdGggJSU4cyBmb3JtYXQgOiVzXG4iLCBidWYpOwoKCS8qIFVzaW5nIHNzY2FuZiAtIHJlYWQgZXZlcnl0aGluZyB1cHRvIG5ld2xpbmUgKi8KCXNucHJpbnRmKGZvcm1hdCwgc2l6ZW9mIGZvcm1hdCwgIiUlJXp1W15cbl0iLCBob3dNdWNoVG9SZWFkKTsKCXNzY2FuZihzdHIsIGZvcm1hdCwgYnVmKTsKCXByaW50ZigiVXNpbmcgc3NjYW5mIHdpdGggJSU4W15cXG5dIGZvcm1hdCA6JXNcbiIsIGJ1Zik7CgoJLyogVXNpbmcgcHJlY2lzaW9uIHNwZWNpZmllciAqLwoJc25wcmludGYoZm9ybWF0LCBzaXplb2YgZm9ybWF0LCAiJSUuJXp1cyIsIGhvd011Y2hUb1JlYWQpOwoJc25wcmludGYoYnVmLCBzaXplb2YgYnVmLCBmb3JtYXQsIHN0cik7CglwcmludGYoIlVzaW5nIHByZWNpc2lvbiBzcGVjaWZpZXIgOiVzXG4iLCBidWYpOwoJcmV0dXJuIDA7Cn0=