首页 > 解决方案 > 我的代码有什么问题?为什么获取功能不起作用?

问题描述

我已经声明了 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;
}

标签: ccharprintfscanfgets

解决方案


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

fgets()需要 3 个参数。一个是 str >>> 指向复制字符的初始化字符串的指针。它还返回 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应该接受输入的内容。


推荐阅读