我有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;
}
当程序运行时,它只在控制台上显示非常简短,然后消失,使控制台空白。是什么原因?
答案 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()等待并保持屏幕,直到您输入任何单个字符。 希望它会有所帮助!