ZKX's LAB

fgets从键盘输入 关于C语言中字符串处理函数fgets的用法

2021-04-05知识2

至急!select函数应用,简易的聊天程序中,用select函数代替fgets和read,达到同时监听键盘和其他终端 fgets其实就是从stdin里面读取;read是从描述符sock里面读取;那么你就可以判断一下,maxfd=(sock>;stdin)?sock:stdinfd_set read_fdset;while(1){FD_ZERO(&read_fdset);FD_SET(sock,&read_fdset);FD_SET(stdin,&read_fdset);result=select(maxfd+1,&read_fdset,NULL,NULL,&seltimeout);if(0)如果是sock上有数据,则read*/if(FD_ISSET(sock,&read_fdset))如果是stdin上有数据,则fgets*/if(FD_ISSET(stdin,&read_fdset))}

求大神指点:C++里头fgets()到底是怎么用的??? 单说读入字符串,scanf和gets只可以从键盘读入,而fgets可以通过第三个参数控制从键盘读入或者文件(如.txt,.dat,.inf)读入fgets(char*str,int len,FILE*stream)第一个参数是字符串数组,第二个是可以读入到字符串中字符的最大个数,第三个是文件流,若为stdin则从键盘读入,若是FILE*指针则从文件中读取includeint main(){char str[32];fgets(str,10,stdin);printf(str);读入123456789回车输出123456789换行读入1234567890回车输出123456789return 0;}#includeincludeint main(){char str[128];FILE*fp=fopen(\"./a.txt\",\"r\");逐行读入本地文件 a.txt 的内容并输出while。feof(fp)){memset(str,0,sizeof(str));fgets(str,sizeof(str)-1,fp);puts(str);}return 0;}

C语言里为什么fgets很少用? 因为fgets函数只能输入字符串,而Scanf()能输入多种类型的数据,加上一般的C语言教材往往重视讲授原理,而对程序健壮性、异常处理等考虑不多,所以一般资料很少提及fgets函数。scanf在获取用户输入的字符串时,遇到空格、制表符即终止,并在结尾自动加上”\\0″。gets在获取用户输入字符串时,遇到空格、制表符不会终止,在结尾也会自动加上“\\0”。由于scanf和gets这两个函数不对输入的长度进行核查,即使用户输入超过了规定的buffer容量,函数也会接受输入,造成缓冲区溢出,程序崩溃。所以建议实际使用时最好用fgets函数来替代。附上fgets函数的有关说明:fgets函数原型:char*fgets(char*buf,int bufsize,FILE*stream);参数:1.*buf:字符型指针,指向用来存储所得数据的地址。2.bufsize:整型数据,指明存储数据的大小。即每次最多读取bufsize-1个字符(第bufsize个字符赋'\\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。3.*stream:文件结构体指针,将要读取的文件流。如为stdin,则从。

#fgets从键盘输入

随机阅读

qrcode
访问手机版