码迷,mamicode.com
首页 > 其他好文 > 详细

关于使用gets()函数的问题

时间:2017-07-01 13:41:56      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:解决   ext   can   getc   回车符   for   bsp   color   class   

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()函数的问题

标签:解决   ext   can   getc   回车符   for   bsp   color   class   

原文地址:http://www.cnblogs.com/2Bthebest1/p/7101964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!