我正在尝试编译以下代码。当我给程序输入时,按下回车键后会出现一个弹出窗口,显示
store program.exe已停止工作
注意:我使用的是Windows 8.1
注意:我正在编写一个程序(在超级商店中使用),它包括以下内容:
- 产品代码
- 产品名称
- 产品价格
- 账单合计计算
这只是个开始。
#include <stdio.h>
int main (void)
{
int d, code;
char product[100], price[100];
printf("tt Welcome to the Metro Storennnn Enter your product code: ");
scanf("%d",code);
if(code<100)
printf("Pharmacyn Name of the Medicine");
fflush(stdout);
fgets(product, 100, stdin);
printf(product);
return 0;
}
对于初学者,您应该尝试
scanf("%d", &code);
你必须告诉scanf写到哪里。如果你没有指定& (&), scanf将不知道应该写到哪里。
你应该阅读文档和指针的介绍。如果你不懂指针,用C和c++编程是毫无意义的;-)
那么你可以把fgets()
改成scanf( "%s", product );
在这种情况下,scanf不需要&
,因为product
是&product[0]
的缩写。这可能会让人很困惑,所以在继续之前先掌握指针。
-
首先,
scanf()
需要一个指针类型变量作为格式说明符的参数。使用scanf("%d", &code); ^^
-
第二,不要混淆
之类的内容scanf()
和fgets()
。否则,fgets()
最终将只消耗scanf("%d"..)
剩余的newline
。尝试使用fgets()
来获取用户输入以更安全。但是,如果必须同时使用,则使用scanf("%d", &code); int ch; while ((ch = getchar())!= EOF && ch != 'n'); fgets(product,100,stdin);
避免剩余换行符的问题。