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

#include
#include
#include
intget_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("<<%s>>\n",buf);
}
return0;
}
绝地无双
浏览 488回答 2
2回答

波斯汪

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)的。

陪伴而非守候

ch=getc(fp)从文件中读入字符,fp传进来的实参是stdin,就是从标准输入中读入了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript