在使用scanf()函数时,当输入数据与格式说明符不完全匹配时,scanf()会将匹配的部分读取,并将剩余部分留在输入流中。下次读取时,这些剩余部分会被再次读取。
以下是一个示例代码,演示了scanf()函数在部分匹配时的行为:
#include
int main() {
char str[10];
int num;
printf("请输入一个字符串和一个整数:");
scanf("%s %d", str, &num);
printf("字符串:%s\n", str);
printf("整数:%d\n", num);
return 0;
}
假设我们输入:"Hello World 123",根据scanf()的格式说明符"%s %d",它将匹配字符串和整数,并将"Hello"存储在str数组中,将123存储在num变量中。"World"和剩余的空格字符会留在输入流中。
输出结果为:
字符串:Hello
整数:123
在下一次调用scanf()时,它将读取剩余的部分:"World 123"。这意味着部分匹配后,scanf()不会忽略输入的剩余部分,而是将其保留在输入流中,供下一次读取使用。