#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)的。
添加回答
举报
0/150
提交
取消