所以我声明了一个名为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;
抱歉,这个愚蠢的问题,但我试图解决,现在我完全不知所措
答案 0 :(得分:0)
scanf()
需要一个指针到将存储扫描值的空间(即变量)。但是您的呼叫移交了la[i].preis
的 value ,这是一个自动转换为float
的{{1}}。
通过使用double
运算符,将代码更改为将la[i].preis
的地址赋予scanf()
:
&