[英]Why does my C program changes the output in each execution without any input or code change?
[英]Why this c code is not accepting input from when i am running this code. this program is getting exist without taking any input
#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;
}
当我运行此检查 function 时,此 function 不接受输入并立即退出。 我不知道为什么请告诉我
在 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);
}
如果在主 function 之后编写,则必须声明 function。 get 已被弃用,因此 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 function 中使用“%[^\n]”而不是“%s”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.