为了账号安全,请及时绑定邮箱和手机立即绑定

C语言如下代码:没有标准输入函数,他是怎么实现输入的

C语言如下代码:没有标准输入函数,他是怎么实现输入的

绝地无双 2019-03-30 11:31:40
#include#include#includeintget_word(char*buf,intbuf_size,FILE*fp){intlen;intch;/*跳过读取空白字符*/while((ch=getc(fp))!=EOF&&!isalnum(ch))if(ch==EOF)returnEOF;/*此时,ch中保存了单词的初始字符。*/len=0;do{buf[len]=ch;len++;if(len>=buf_size){/*由于单词太长提示错误*/fprintf(stderr,"wordtoolong.\n");exit(1);}}while((ch=getc(fp))!=EOF&&isalnum(ch));buf[len]='\0';returnlen;}intmain(){charbuf[256];while(get_word(buf,256,stdin)!=EOF){printf("\n",buf);}return0;}
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

FILE*是文件指针类型,可以用来读写文件或者进行其他I/O工作。
C语言中有stdin,stdout,stderr三个FILE*类型的全局变量,分别是标准输入,标准输出,标准错误输出,在程序启动时由C运行库加载。
默认情况下,一般标准输出和标准错误输出都是屏幕,标准输入是键盘。
chargetc(FILE*stream);
charfgetc(FILE*stream);//二者等价
这个函数从fp这个文件指针中读取一个字符并返回。get_word参数中传入的fp参数是stdin即键盘,所以getc(fp)就是从键盘读入一个字符,当然就实现输入了。
其实一般scanf和gets这两个输入函数最终还是要调用到getc(stdin)的。
                            
查看完整回答
反对 回复 2019-03-30
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

ch=getc(fp)
从文件中读入字符,fp传进来的实参是stdin,就是从标准输入中读入了
                            
查看完整回答
反对 回复 2019-03-30
  • 2 回答
  • 0 关注
  • 487 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号