C语言中文件指针会随输入而移动位置吗? 50
#include<stdio.h>#include<stdlib.o>intmain(void){intch;getchar();rewind(stdin);while(...
#include<stdio.h>
#include<stdlib.o>
int main(void)
{
int ch;
getchar();
rewind(stdin);
while((ch=getc(stdin))!=EOF)
putchar(ch);
return 0;
}
这是一个刷新标准输入缓冲区的程序,我想问下这个程序的工作原理,比如输入ABC以后按下回车 ABC被送入缓冲区 那在文件中还存在ABC字符吗?此时的文件指针是否指向文件尾,调用rewind()函数后,文件指针指向文件开始出,输入OK 以后 文件在标准输出的字符是0K ,我想问下,此时输入的OK 也被送入缓冲区,那以前送入的ABC中剩下的BC字符呢? 他们不是也在缓冲区吗? 为什么输出的不是BC,而是OK,难道putchar()函数输出的是文件指针所指向的字符? 如果输出的是文件所指向的字符 那在输入字符时 文件指针应该是不移动的才对,但是如果指针不移动 怎么确定后续输入字符的位置呢? 请高手帮忙解答,谢谢了,这个问题困扰小弟很久了
(根据四楼的回答 难道rewind()函数有刷新缓冲区的作用) 展开
#include<stdlib.o>
int main(void)
{
int ch;
getchar();
rewind(stdin);
while((ch=getc(stdin))!=EOF)
putchar(ch);
return 0;
}
这是一个刷新标准输入缓冲区的程序,我想问下这个程序的工作原理,比如输入ABC以后按下回车 ABC被送入缓冲区 那在文件中还存在ABC字符吗?此时的文件指针是否指向文件尾,调用rewind()函数后,文件指针指向文件开始出,输入OK 以后 文件在标准输出的字符是0K ,我想问下,此时输入的OK 也被送入缓冲区,那以前送入的ABC中剩下的BC字符呢? 他们不是也在缓冲区吗? 为什么输出的不是BC,而是OK,难道putchar()函数输出的是文件指针所指向的字符? 如果输出的是文件所指向的字符 那在输入字符时 文件指针应该是不移动的才对,但是如果指针不移动 怎么确定后续输入字符的位置呢? 请高手帮忙解答,谢谢了,这个问题困扰小弟很久了
(根据四楼的回答 难道rewind()函数有刷新缓冲区的作用) 展开
3个回答
2009-09-15
展开全部
1、当输入ABC后<ENTER>,ABC存入缓冲区。
2、执行rewind(stdin)清空缓存区,ABC被清空。
3、输入OK,现在输入的OK是通过getc读取的,输入<ENTER>,putchar(ch)首先输出O,循环输出K,等待输入。。。
putchar是从缓存区里输出一个字符,所以输出的OK当时在缓冲区,putchar循环输出。
可以将
while(ch=getc(stdin))!=EOF)
{
putchar(ch);
printf("\n");
}
运行一下,就知道大概了
2、执行rewind(stdin)清空缓存区,ABC被清空。
3、输入OK,现在输入的OK是通过getc读取的,输入<ENTER>,putchar(ch)首先输出O,循环输出K,等待输入。。。
putchar是从缓存区里输出一个字符,所以输出的OK当时在缓冲区,putchar循环输出。
可以将
while(ch=getc(stdin))!=EOF)
{
putchar(ch);
printf("\n");
}
运行一下,就知道大概了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
会啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询