好的,所以我想使用scanf在一个结构中输入一个字母的字符和三个数字,我想用打印它的函数打印所有这四个字符。但每次我运行它我会得到错误,说我无法运行它,或者有时它会打印除了字符部分之外的所有内容,它只会变成空白......这可能是什么问题?
#include <stdio.h>
struct Score
{
char a;
float x, y, z;
};
void main(void)
{
void avg(char *a, float x, float y, float z);
char a1 = 'b';
float x1 = 0, y1 = 0, z1 = 0;
printf("enter an alphaber\n");
fflush(stdin);
scanf_s("%c", &a1);
printf("enter three numbers (ex:1,2,3)\n");
fflush(stdin);
scanf_s("%f,%f,%f", &x1, &y1, &z1);
struct Score s1 = { a1, x1, y1, z1 };
avg(s1.a, s1.x, s1.y, s1.z);
}
void avg(char *a, float x, float y, float z)
{
printf("%c (%f,%f,%f) \n", a, x, y, z);
}
答案 0 :(得分:0)
avg()
的签名是错误的。第一个参数不应该是char*
而是char
。
因为我讨厌特定于MSVC的代码,所以你的代码应该是这样的。 请注意,您应该检查读数是否成功。
#include <stdio.h>
struct Score
{
char a;
float x, y, z;
};
int main(void)
{
/* declareing function inside function is unusual, but not bad */
void avg(char a, float x, float y, float z);
char a1 = 'b';
float x1 = 0, y1 = 0, z1 = 0;
printf("enter an alphaber\n");
if (scanf("%c", &a1) != 1) {
puts("read error");
return 1;
}
printf("enter three numbers (ex:1,2,3)\n");
if (scanf("%f,%f,%f", &x1, &y1, &z1) != 3) {
puts("read error");
return 1;
}
struct Score s1 = { a1, x1, y1, z1 };
avg(s1.a, s1.x, s1.y, s1.z);
}
void avg(char a, float x, float y, float z)
{
printf("%c (%f,%f,%f) \n", a, x, y, z);
}