学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

[求助]不明白这个gets()函数

[求助]不明白这个gets()函数

有这样的一个小程序:
引用:
/********************************************************
** By Brahmos  *
*********************************************************/
#include "stdio.h"
void main()
{
int n;
char s[50];
printf("Input a number:");
scanf("%d",&n);
gets(s);
puts(s);
printf("The number is:%d\n",n);
}
运行发现,当我输入“15”并按回车键后,就运行到printf("")这一句了。程序中的gets(s)好像不起作用了。
我猜想是受scanf()影响,因为scanf()后面要按回车键,这个回车键中的换行符被gets()捕捉到了,就立即结束了,并非是不运行。。
不知有哪位朋友知道为什么?希望能探讨一下。。 谢谢!

[ 本帖最后由 布拉莫斯 于 2008-5-6 17:38 编辑 ]

TOP

猜想正确……
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

复制内容到剪贴板
代码:
/********************************************
        加行代码即可。
********************************************/
#include "stdio.h"
void main()
{
int n;
char s[50],c;
printf("Input a number:");
scanf("%d",&n);
while(c=getchar()!='\n'&&c!=EOF);
gets(s);
puts(s);
printf("The number is:%d\n",n);

getch();
}

TOP

习惯问题

我习惯在格式控制符前后加空格
复制内容到剪贴板
代码:
#include<stdio.h>
int main()
{
    int n;
    char s[50];
    printf("Input a number:");
    scanf(" %d ",&n);
    gets(s);
    puts(s);
    printf("The number is:%d\n",n);
    return 0;
}
雁无留踪之意,水无取影之心

TOP

谢谢楼上的两三位朋友做答。........
真理往往掌握在少数人手中,可现实却是少数服从多数!

TOP

其实,我解决的方法是再加一个gets()在原来的gets()函数后面
就这样
引用:
/********************************************************
** Highlight software by yzfy(雨中飞燕) http://yzfy.org *
*********************************************************/
#include<stdio.h>
int main()
{
    int n;
    char s[50];
    printf("Input a number:");
    scanf(" %d",&n);
    gets(s);
    gets(s);
    puts(s);
    printf("The number is:%d\n",n);
    return 0;
}
[ 本帖最后由 布拉莫斯 于 2008-5-6 17:40 编辑 ]
真理往往掌握在少数人手中,可现实却是少数服从多数!

TOP

广陵,想问问你,为什么你要检查EOF呢?
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

我一般是这样的:

#define CLEAR { char c ; while( (c=getchar()) != '/n' && c!=EOF );}

然后在要清空缓冲的地方写上CLEAR

EOF通常表示输入结束``所以还是要检查一下这个吧
女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
www.yzfy.org    yzfy.5d6d.com

TOP

问题是,都EOF了,剩下的程序还有必要执行么?直接return就够了吧……
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

菜鸟问句你这程序是要求输入什么输出什么 为什么输入 n又要gets(s) 呢

TOP

发新话题