我正在尝试编译以下代码。当我输入程序时,按下回车键后会出现一个显示
的弹出窗口存储program.exe已停止工作
注意:我使用的是Windows 8.1
注意:我正在开发一个程序(用于超级商店),其中包括以下内容:
这只是一个开始。
#include <stdio.h>
int main (void)
{
int d, code;
char product[100], price[100];
printf("\t\t Welcome to the Metro Store\n\n\n\n Enter your product code: ");
scanf("%d",code);
if(code<100)
printf("Pharmacy\n Name of the Medicine");
fflush(stdout);
fgets(product, 100, stdin);
printf(product);
return 0;
}
答案 0 :(得分:1)
对于初学者,你应该尝试
scanf("%d", &code);
您必须告诉scanf写入的位置。如果您没有指定&符号(&amp;),则scanf将不知道应该写入的位置。
你应该阅读docs,绝对是对指针的一个很好的介绍。如果你不理解指针,用C和C ++编程是毫无意义的; - )
然后,您可以将fgets()
更改为scanf( "%s", product );
在这种情况下,scanf不需要&
,因为product
是&product[0]
的缩写。这可能会让人感到困惑,所以在继续之前先掌握指针。
答案 1 :(得分:0)
首先,scanf()
期望指针类型变量作为格式说明符的参数。使用
scanf("%d", &code);
^^
其次,请勿混淆scanf()
和fgets()
。否则,fgets()
最终只会消耗newline
留下的scanf("%d"..)
。尝试使用fgets()
使用户输入更安全。但是,如果必须同时使用两者,请使用
scanf("%d", &code);
int ch; while ((ch = getchar())!= EOF && ch != '\n');
fgets(product,100,stdin);
以避免剩余换行符出现问题。