我对以下代码感到困惑,
#include<stdio.h>
int main()
{
char buf[100]={'\0'};
int data=0;
scanf("%d",&data);
read(stdin,buf,4); //attaching to stdin
printf("buffer is %s\n",buf);
return 1;
}
假设在运行时我提供了输入10abcd
,因此根据我的理解应该发生以下情况:
- scanf 应该放在
10
数据中 - 并且
abcd
仍然在标准输入缓冲区 - 当 read 尝试读取标准输入(已经
abcd
存在)时,它应该abcd
将buf
- 所以 printf 应该打印
abcd
但它没有发生,printf 没有显示 o/p
我在这里错过了什么吗?