c - 如何将结构成员用于算术运算符(add、sub、mul、div 变量到结构成员)

标签 c math struct

抱歉这个菜鸟问题。我如何对结构中的变量使用算术运算符?

我有这个结构

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

我想做的是给 float 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 的值保持不变。

我知道我错过了什么。希望不会太麻烦

最佳答案

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 标准,则不再严格需要)

关于c - 如何将结构成员用于算术运算符(add、sub、mul、div 变量到结构成员),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387932/

相关文章:

c - 对于非常大的整数值,我们如何将字符串转换为 int?

c++ - 将数据拟合到 3 次多项式

c - 纯 C 中的符号计算库

c++ - struct C++ 的深拷贝

c - 别名结构的习语

c - 程序没有按预期退出

c - 我们是否总是需要在 malloc/realloc 之后检查指针是否为空?

c - 从 Valgrind 源代码访问用户变量

python - 图灵机欧几里得求最大公约数的算法 python

c - 在内存中分配的修改后的结构在函数结束后不保留值