我的代码有什么问题?为什么获取功能不起作用?

What's wrong with my code? why gets function is not working?

我已经声明了 3 个变量。这里 ch 用于存储一个字符,s 用于存储单个单词,sen 用于存储一个句子或多个单词! 但是,当我 运行 代码时,它没有机会为 sen 变量提供输入。

我试图找出问题所在。但我失败了! 我的代码有什么问题。谁能帮帮我...

这是我的代码...

#include<stdio.h>
int main()
{
    char ch, s[20], sen[100];
    scanf("%c%s",&ch,&s);
    gets(sen);
    printf("%c\n%s\n%s", ch, s, sen);
    return 0;
}

您不应该使用 gets 缓冲区溢出函数。请改用 fgets()

fgets() 接受 3 个参数。 一个是 str >>> 指向复制字符的初始化字符串的指针。它还 returns str.

另一个是 int n >>> 要复制的字符数。

最后,文件流或标准输入 >>> 从标准输入读取。

使用

#include<stdio.h>
int main()
{
    char ch;
    char* s[20], sen[100];
    scanf("%c%*c\n", &ch);
    scanf_s("%19s", s, 20);
    fgets(sen, 100, stdin);
    printf("%c\n%s\n%s", ch, s, sen);
    return 0;
}

您缺少 &sen,它应该接受输入。