因此,当我运行程序时,如果我为第一个问题输入"is",它会提示这是哪种经销商。只有当我输入非大写字母时,我才能正确地运行整个程序并提示所有 printf
语句。例如:
Yes
bartow ford
wash
brian cox
ford explorer (if i input 2001 ford explorer it skips the next two printf statements idk why)
etc. etc.
但是如果我使用大写字母,例如
Bartow Ford.
它跳过 printf
。它需要什么类型的工作?
我知道有些上下文很差,但我首先担心结构,然后回过头来使语言“漂亮”
我的想法是让用户输入汽车来自哪里的经销商、需要对汽车做什么、车主、品牌等等,然后是任何其他信息。然后将其保存到我桌面上的一个单独文件中。
非常感谢你们提供任何信息!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define WASH 20
#define WAX 30
#define FULL 100
#define MINI 40
#define TINT 60
int main() {
int exit;
char type[40];
char car[40];
char name[40];
char work[40];
char dealer[40];
char comments[200];
float total;
FILE *elite;
elite = fopen("/Users/BlakePatterson/Desktop/Elite Detail/Customer.txt", "w");
printf(".\nIs this a dealer car or is this a customer car?.\n");
scanf("%s", type);
if (strcmp(type, "Yes") == 0) {
printf("What is the name of the dealership?.\n");
scanf(" %s", dealer);
printf("What type of work needs to be done to the car?\n\n 1.Wash.\n2.Wax.\n");
scanf(" %s", work);
printf("Please input the name of the person handling the car.\n");
scanf(" %s", name);
printf("Please input the make, model, year and condition of the car upon arrival.\n");
scanf(" %s", car);
printf("Do you need to make any more commentd?.\n");
scanf(" %s", comments);
printf("Are you finished? if so press 2 if not press 1.\n");
scanf("%d", &exit);
}
fprintf(elite,"%s%s%s%s%s", dealer, work, name, car, comments);
fclose(elite);
return 0;
}
最佳答案
您观察到的行为与大写字母无关,而与包含多个单词的答案有关。您不能使用 scanf("%s", dealer);
读取多个单词。初始空格是多余的,因为 %s
会跳过任何前导空格并将单个单词读入目标数组。随后对 scanf()
的调用将读取以下单词作为其他问题的答案。
您可以使用 fgets(dealer, sizeof dealer, stdin)
并删除结尾的换行符或使用 scanf("%39[^\n]", dealer);
读取同一行上的多个单词,最多 39 个字节。其他输入行也是如此,针对不同的数组大小进行调整。
关于C程序在输入大写字母时跳行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44739074/