c - 如何将结构的成员用于算术运算符(将变量添加、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
保持不变。
我知道我错过了一些东西。希望不会太麻烦
解决方案
的格式说明符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 标准,则不再严格需要)
推荐阅读
- azure - Azure 通知中心标记表达式不适用于多个标记
- android - 无法用 Genymotion(三星 Galaxy S10)的模拟器编译新的 flutter_2.0.4
- python - 如果键列表中的所有元素都存在,则检索键 n 字典
- list - 如何让动态列(如第 w1、w2、w3 周等)包含数字值作为 Sharepoint 列表中的分数
- java - 匹配包含任何子字符串的列表
- android - OkHttp(s)URLConnection 类在 4.9.0 版本中不可用
- javascript - 给定一个数组索引,如何在包装时获取索引前后的 n 个邻居?
- vue.js - 如何从 Uppy 的回调事件中访问“this”
- python - python scrapy页面源与按下F12时显示的不同
- python - 如何将我在 python 输出中收到的 mqtt 数据保存在文本中?