#include <stdio.h>
main()
{
int t,i;
scanf("%d",&t);
check();
return 0;
}
int check()
{
char s[20];
gets(s);
printf("%s",s);
return 1;
}
当我运行此检查功能时,此功能不接受输入并立即退出。我不知道为什么要告诉我
答案 0 :(得分:1)
在scanf中%d
后面使用空格字符以读取跟随输入值的白色字符。
换句话说,使用:
scanf("%d ", &t);
还请注意,gets
已过时多年。它容易受到缓冲区溢出攻击。请改用fgets
。
这是该程序的固定版本:
#include <stdio.h>
#define CHECK_BUFSIZE 19
int check()
{
char s[CHECK_BUFSIZE+1];
fgets(s, CHECK_BUFSIZE, stdin);
printf("%s",s);
}
int main()
{
int t,i;
scanf("%d ",&t);
check();
return(0);
}
答案 1 :(得分:0)
如果在主函数之后编写函数,则必须声明该函数。 gets已被弃用,所以scanf是更好的选择。
#include <stdio.h>
int check();
main()
{
int t,i;
scanf("%d",&t);
check();
return 0;
}
int check()
{
char s[20];
scanf("%s",s);
printf("%s",s);
return 1;
}
此外,如果要在字符串中输入带空格的字符串,请在scanf函数中使用“%[^ \ n]”而不是“%s”