C程序在控制台上简要显示,然后消失

时间:2016-09-14 00:17:43

标签: c console

我有java背景,但我是C编程新手,这是我的第一个硬件任务,请原谅我,如果这是一个简单的修复。我需要问顾客他们的名字是什么&他们想买什么。我是这样开始的:

#include <stdio.h>
#include <stdlib.h>
#define TSHIRT  18.95
#define CHIPS   1.79
#define COKE    2.99
#define TAX     0.06
#define DEPOSIT 1.20

int main(void) {
printf("Hello customer! What shall I call you?");

char name[20];
scanf("%s",name);
printf("Okay %s, here is what we have to offer:",name);
return EXIT_SUCCESS;
}

当程序运行时,它只在控制台上显示非常简短,然后消失,使控制台空白。是什么原因?

2 个答案:

答案 0 :(得分:3)

您在语句结束时返回,我假设您正在使用Visual Studio,它将在应用程序运行完毕后终止控制台。你可以做的一件事是在返回之前添加一个断点,或者更简单的是用getch()来捏造它。例如。

#include <stdio.h>
#include <stdlib.h>
#define TSHIRT  18.95
#define CHIPS   1.79
#define COKE    2.99
#define TAX     0.06
#define DEPOSIT 1.20

int main(void) {
printf("Hello customer! What shall I call you?");

char name[20];
scanf("%s",name);
printf("Okay %s, here is what we have to offer:",name);
getch();
return EXIT_SUCCESS;
}

如果不起作用,请添加include conio.h,但我相信没有它就可以。

#include <conio.h>

另外,为了帮助您避免缓冲区溢出,您应该使用scanf,如下所示:

scanf("%19s",name);

您不希望扫描超过分配的缓冲区,并且您应该使用缓冲区长度减去1,因为scanf会在扫描结束时附加一个空终止符。

答案 1 :(得分:0)

进行以下细微更改:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>  // It contains information of getch() function which we used later in program
#define TSHIRT  18.95
#define CHIPS   1.79
#define COKE    2.99
#define TAX     0.06
#define DEPOSIT 1.20

int main(void) {
printf("Hello customer! What shall I call you?");

char name[20];
scanf("%s",name);
printf("Okay %s, here is what we have to offer:",name);
getch();   // It will wait for one char input from user
return EXIT_SUCCESS;
}

getch()等待并保持屏幕,直到您输入任何单个字符。 希望它会有所帮助!