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 程序在控制台上短暂显示,然后消失的主要内容,如果未能解决你的问题,请参考以下文章
在控制台上执行的 python/c++/.jar 程序中插入分页符或换页符
编写程序,提示用户输入年份和该年第一天的星期,在控制台上显示该年的日历表。
如何在 Windows 控制台上的 C 程序中用希腊语进行 I/O
如何在 GUI 输出窗口而不是 Visual Studio 2015 中的 cmd 控制台上显示我的 C++ 程序输出?