所以我声明了一个名为price的 float ,当我尝试编译它时,我得到一个警告,它将是一个 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()
需要一个指向存储扫描值的空间(即变量)的指针。但是您的调用会传递 la[i].preis
的值,它是一个float
,会自动转换为 double
.
更改代码,使用 &
运算符将 la[i].preis
的地址提供给 scanf()
,如下所示:
scanf("%f", &la[i].preis);
关于c - *初学者 *C 让我对警告感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59184989/