首页 > 解决方案 > 如何将结构的成员用于算术运算符(将变量添加、sub、mul、div 到结构成员)

问题描述

对不起菜鸟问题。如何对结构中的变量使用 arith 运算符?

我有这个结构

struct account {
    int no;
    char name[100];
    int pin;
    float id;
}; 

我想要做的是添加一个值来浮动id

#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>

main() {
    struct account {
        int no;
        char name[100];
        int pin;
        float id;
    }; 
    struct account rec;
    float i;
    printf("enter var value \n");
    scanf("%f", &i);

    printf("enter value to struct\n");
    scanf("%f", &rec.id);

    rec.id = rec.id + i;

    printf("sum is %0.2f", rec.id);
}

的值rec.id保持不变。

我知道我错过了一些东西。希望不会太麻烦

标签: cmathstruct

解决方案


的格式说明符scanf()不同于printf(). 特别是小数的长度不能在那里给出,所以标志0.2%f无效的。只需使用

scanf("%f",&i);

printf("enter value to struct\n");
scanf("%f",&rec.id);

正如 Jonathan Leffler 指出的那样,可以指定数字的总长度(包括点和小数),例如%4f扫描四字符小数。

此外,您应该启用所有编译器警告并听取它们。您会观察到警告,这些警告显示了这个确切的问题。

此外,您应该检查 的返回值scanf()以查看转换是否成功。否则,变量中的值将保持未初始化状态。

两个小问题:

  • 利用int main (void)
  • main()从或调用显式返回值exit(0)(如果您至少使用 C99 标准,则不再严格需要)

推荐阅读