如果scanf接受的字符多于缓冲区的空间,将会发生什么?例如,
char foo[2], bar[5]="abcd";
sscanf(bar, "%s", foo);
这将是一个未定义的行为,如@Mad physics在命令中提到的,但如果你想避免I,你可以使用scanf()
函数的width
修饰符从缓冲区读取确切的大小。
小于缓冲区大小1,为空字符留出空间。
例子:
char buff[8], str[32]="asdfasdfasasdfasdfdfasdf";
sscanf(buff, "%7s", str);