我想通过scanf将字符和整数输入结构

时间:2016-06-09 14:09:58

标签: c++ struct char scanf

好的,所以我想使用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);
}

1 个答案:

答案 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);
}