所以当我输入"是"对于第一个问题,它会提示这是什么样的经销商。只有输入非大写字母,我才能正确地运行整个程序,提示所有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;
}
答案 0 :(得分:1)
您观察到的行为与大写字母无关,而是与多个单词的答案无关。您无法使用scanf(" %s", dealer);
阅读多个字词。初始空间是多余的,因为%s
会跳过任何前导空格并将单个单词读入目标数组。后续调用scanf()
将读取以下字词作为其他问题的答案。
您可以使用fgets(dealer, sizeof dealer, stdin)
并删除尾随换行符,也可以使用scanf(" %39[^\n]", dealer);
在同一行读取多个单词,最多39个字节。对于其他输入线也是如此,根据不同的阵列大小进行调整。