C 程序在控制台上短暂显示,然后消失

Posted

技术标签:

【中文标题】C 程序在控制台上短暂显示,然后消失【英文标题】:C program briefly shows on console, then disappears 【发布时间】:2016-09-14 00:17:42 【问题描述】:

我有 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;

程序运行时,它只会在控制台上短暂显示,然后消失,控制台为空白。这是什么原因?

【问题讨论】:

程序无事可做。例如,如果您希望他停止使用 getchar() 添加输入操作(在 return 语句之前)。 你是说它不等你输入名字吗? 有几十种可能的答案,之前都已经深入探讨过了。学习使用谷歌。 ***.com/questions/1864029/…***.com/questions/1173208/… 【参考方案1】:

您在语句结束时返回,我假设您使用的是 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);

您不想扫描超过分配的缓冲区,您应该使用缓冲区长度减一,因为 scanf 会在扫描末尾附加一个空终止符。

【讨论】:

【参考方案2】:

进行以下细微更改:

#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() 等待并保持屏幕,直到您输入任何单个字符。 希望对您有所帮助!

【讨论】:

以上是关于C 程序在控制台上短暂显示,然后消失的主要内容,如果未能解决你的问题,请参考以下文章

C ++中的控制台程序[重复]

在控制台上执行的 python/c++/.jar 程序中插入分页符或换页符

编写程序,提示用户输入年份和该年第一天的星期,在控制台上显示该年的日历表。

如何在 Windows 控制台上的 C 程序中用希腊语进行 I/O

如何在 GUI 输出窗口而不是 Visual Studio 2015 中的 cmd 控制台上显示我的 C++ 程序输出?

在控制台上显示:检测到慢速网络。加载时将使用后备字体