C Store program.exe已停止工作,如何解决?

C Store program.exe已停止工作,如何解决?,c,printf,scanf,C,Printf,Scanf,我正在尝试编译以下代码。当我向程序输入时,按enter键后会出现一个弹出窗口,显示 store program.exe已停止工作 注意:我使用的是Windows 8.1 注:我正在编写一个程序(用于超级商店),其中包括以下内容: 产品代码 产品名称 产品价格 总账单计算 这只是开始 #include <stdio.h> int main (void) { int d, code; char product[100], price[100]; printf("\

我正在尝试编译以下代码。当我向程序输入时,按enter键后会出现一个弹出窗口,显示

store 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;
}
#包括
内部主(空)
{
int d,代码;
炭产品[100],价格[100];
printf(“\t\t欢迎来到Metro商店\n\n\n\n输入您的产品代码:”;
scanf(“%d”,代码);

如果(代码对于初学者,您应该尝试

scanf("%d", &code);
您必须告诉scanf要写入到哪里。如果您不指定与(&)号,scanf将不知道应该写入到哪里

你应该阅读并明确地介绍指针。如果你不理解指针,C和C++编程毫无意义;-——

然后您可以将
fgets()
更改为
scanf(“%s”,产品);

在这种情况下,scanf不需要
,因为
产品
和产品[0]
的缩写。这可能会让人很困惑,所以在继续之前先掌握指针。

  • 首先,
    scanf()
    需要一个指针类型变量作为格式说明符的参数。使用

    scanf("%d", &code);
                ^^
    
  • 第二,不要混淆
    scanf()
    fgets()
    。否则,
    fgets()
    将只使用
    scanf(“%d”)留下的
    换行符(
    。尝试使用
    fgets()
    ,以便更安全地接受用户输入。但是,如果必须同时使用这两种换行符,请使用类似的方法

     scanf("%d", &code);
     int ch; while ((ch = getchar())!= EOF && ch != '\n');
     fgets(product,100,stdin);
    
    为了避免换行符的遗留问题


您有充分的理由以不同于产品的方式阅读代码吗?不要将
scanf()
fgets()
scanf(“%d”,code);
-->-->
scanf(“%d%*c”,&code);
停止工作是一条非常通用的错误消息,几乎不值得诊断问题。它甚至不是一条正确的错误消息;您的大多数软件将“停止工作”因为这显然是一个控制台程序,不要在浏览器中双击它,在命令控制台中运行,并且可以得到更多有用的数据。指针是一个好的开始,请不要指向C++的DOC来标记问题“代码>代码<代码>。在这种情况下它是无害的,但是肯定有更好的参考垫。erial=)@AndreasGrapentin您是对的,在scanf的情况下没有区别。我只链接到了“C”