正确输入输出字符,字母与字符在scanf中的区别

问题遇到的现象和发生背景

请编写程序从键盘读入数据,并按要求输出

输入格式

  共三行。
  第一行:输入两个整数,中间用一个逗号隔开;
  第二行:输入两个浮点数,中间用空格隔开;
  第三行:输入两个字母,每个字母前面加一个空格,中间加一个逗号。

输出格式

  按照输入的原样输入数据,其中的浮点数输出时保留小数点后1位。

用代码块功能插入代码,请勿粘贴截图

#include
main()
{
int a, b, f;
float c, d;
int i = 0;
char s[];
scanf("%d%d", &a, &b);
scanf("%f%f", &c, &d);
while ((f = getchar()) != EOF)
{
if (f != ' ' && ',' && '\n' && '.')
{
s[i] = f;
++i;
}
}
printf("%d,%d\n", a, b);
printf("%.1f %.1f\n", c, d);
printf(" %c, %c", s[0], s[1]);
}

运行结果及报错内容

s未定义内存大小

我想要达到的结果

正确解决题目

char s[]; 数组没设置长度呀,char s[6],需要数字这种

字符数组s你要给它开辟空间的呀,比如char s[10]

#include<stdio.h>
int main()
{
int a, b, f;
float c, d;
int i = 0;
char s[10];//给定数组大小才行
scanf("%d,%d", &a, &b);//输入格式
scanf("%f %f", &c, &d);//输入格式
getchar();
while ((f = getchar()) != EOF)
{
if (f != ' ' && f != ',' && f != '\n' && f != '.')//不能用单独一个符号
{
s[i] = f;
++i;
}
if(f == '\n'){
    break;
}
}
printf("%d,%d\n", a, b);
printf("%.1f %.1f\n", c, d);
printf(" %c, %c", s[0], s[1]);
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^