c - *初学者 *C 让我对警告感到困惑
问题描述
所以我声明了一个名为 price 的浮点数,当我尝试编译它时,我警告说它会是一个 double ,有人能告诉我为什么 C 认为这是一个 double 吗?
B3N2.c:37:警告:格式指定类型'float *',但参数的类型为'double' [-Wformat] scanf("%f", la[i].preis);
int main(int argc, char *argv[]) {
struct Lager {
char artikel[200];
int anzahl;
float preis;
} la[200];
printf("Wilkommen bei Lagerverwaltung 97\n\n\nWas möchten sie tun ?\n");
int exit = 0;
int x,v;
int f = 1;
int i = 0;
char ques;
int end;
do {
printf("\n(1)Artikel hinzufügen\n(2)Artikel entnehmen.\n(3)Eintrag suchen.\n(4)Lager ausgeben.\n(5)Exit\n");
scanf("%x",&x);
switch (x) {
case 1://add
do {
printf("\nGebe den namen des Produkts an: ");
scanf("%s", la[i].artikel);
printf("\nAnzahl der verfügbaren Produkte: ");
scanf("%i", &la[i].anzahl);
printf("\ngib den preis des artikels an: ");
scanf("%f", la[i].preis);
printf("\n\nWeiteres Produkt hinzufügen ? (J/N)");
scanf("%s", &ques);
switch (ques) {
case 'J':
v++;
f++;
break;
case 'N':
end = 1;
v = 0;
break;
default:
printf("Falsche Eingabe\n");
break;
}
} while (end != 1);
if (v >= 2) {
printf("Produkt wurde Erfolgreich hinzugefügt\n\n");
}else {
printf("Produkte wurden Erfolgreich hinzugefügt\n\n");
}
break;
抱歉这个愚蠢的问题,但我试图解决它,现在我完全不知所措
解决方案
scanf()
需要一个指向存储扫描值的空间(即变量)的指针。但是你的电话交出了自动转换成 a 的a的值。la[i].preis
float
double
使用这样的运算符更改您的代码以提供 to 的la[i].preis
地址:scanf()
&
scanf("%f", &la[i].preis);
推荐阅读
- node.js - express.js 不影响响应
- html - 为什么“溢出:隐藏;” 隐藏导航栏上方和下方的空间?
- javascript - 更改 Buefy 库 (Vue.js) 的 TagInput 元素中的默认行为?
- javascript - 知道字符串的一个单词是否在数组中 Node JS
- wordpress - WordPress Gutenberg:动态块不加载帖子列表
- azure - 如何自定义默认工作项状态的颜色
- google-chrome-extension - 使用 Chrome 扩展程序进行 Google 转化跟踪
- python-3.x - 为命令创建冷却时间
- excel - VBScript 在保存和关闭 Excel 工作簿之前结束
- bash - git bash 立即关闭