繁体   English   中英

为什么这个 c 代码在我运行此代码时不接受输入。 该程序无需任何输入即可存在

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM