我的代码有什么问题?为什么获取功能不起作用?
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
,它应该接受输入。
我已经声明了 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
,它应该接受输入。