首页 > 代码库 > 关于使用gets()函数的问题
关于使用gets()函数的问题
scanf函数不读回车,所以使用scanf()后,在stdin里面还有回车符没被读走,因此当想用gets()输入一个字符串的时候,
gets就直接把‘\n‘字符读走了,就结束了第一次的gets。可以在gets()前加上getchar()
1 for(i=0;i<N;i++) 2 { 3 printf("please input NO.%d‘s name and number:\n",i+1); 4 scanf("%d",&a); 5 gets(name[i]); 6 gets(num[i]); 7 }
第一个gets()取得‘\n‘字符,第二个gets()取得第一个字符串,第二个字符完全未输入。因此可以改为:
1 for(i=0;i<N;i++) 2 { 3 printf("please input NO.%d‘s name and number:\n",i+1); 4 scanf("%d",&a); 5 getchar(); 6 gets(name[i]); 7 gets(num[i]); 8 }
这样就解决问题了。也可以使用rewind(stdin)或者fflush(stdin)来清除缓存,但仅可以在Windows系统下有效,在Linux系统中无法使用(为C语言中的扩展函数,非标准)。
关于使用gets()函数的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。