c - 我的代码有什么问题?为什么获取功能不起作用?
问题描述
我已经声明了 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 >>> 指向复制字符的初始化字符串的指针。它还返回 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
应该接受输入的内容。