抱歉这个菜鸟问题。我如何对结构中的变量使用算术运算符?
我有这个结构
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/