scanf运行时出现错误

3

我是编程新手。我尝试实现一个示例程序,但它给了我一个运行时错误。但是 height 属性是一个浮点类型。

格式化字符串“%f”需要类型为“float *”的参数,但第二个参数的类型是“double”

#include<stdio.h>
#include<string.h>

struct user
{
    char name[30];
    float height;
    /*float weight;
    int age;
    char hand[9];
    char position[10];
    char expectation[10];*/
};

struct user get_user_data()
{
    struct user u;
    printf("\nEnter your name: ");
    scanf("%c", u.name);

    printf("\nEnter your height: ");
    scanf("%f", u.height);

    return u;

};
int height_ratings(struct user u)
{
  int heightrt = 0;

    if (u.height > 70)
    {
       heightrt =70/10;

    }
    return heightrt;
};

int main(int argc, char* argv[])
{

    struct  user user1 = get_user_data();

    int heighRate = height_ratings(user1);

    printf("your height is  ", heighRate);

    return 0;

}
2个回答

2
您的scanf()调用存在格式不匹配的问题:
  1. scanf("%c", u.name); 应该改为 scanf("%s", u.name);

%s 用于扫描一个字符串,而 %c 用于扫描一个字符。

以及

  1. scanf("%f", u.height); 应该改为 scanf("%f", &u.height);

注意添加了 &。您需要传递浮点变量的地址。


谢谢,我按照您的指示修复了它。 - rohitha

-1

哎呀.. 你可能想试试这个

struct user *get_user_data()
{
   /* you have to use dynamic allocation if you want to return it
      (don't forget to free) */
   struct user *u = (struct user *)malloc(sizeof(struct user));
   printf("\nEnter your name: ");
   /* use %s for string instead of %c */
   scanf("%s", u.name);

   printf("\nEnter your height: ");
   /* don't forget to use & (reference operator) */
   scanf("%f", &u.height);

   return u;
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接