#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int ticket,tnotran,tran;
char pass[40],desti[2],cla,destina[20],clana[20];
float tfare,cfare,nfare,gtnfare;
int main(int argc, char *argv[]) {
printf("\n\n\t\tTicket NO.: ");
scanf("%d",&ticket);
while (ticket != 0){
head();
con();
system("pause");
system("cls");
netcomp();
out();
system("pause");
system("cls");
printf("\n\n\t\tTicket NO.: ");
scanf("%d",&ticket);
}
printf("\n\n\t\tTotal No. of Transactions: %d", tran);
printf("\n\n\t\tGrand Total of Net Fare: %f", gtnfare);
}
head(){
printf("\n\t\tPassenger's Name: ");
scanf("%s",&pass);
printf("\n\t\tDestination Code: ");
scanf("%s",&desti);
printf("\n\t\tClass Code: ");
scanf("%s",&cla);
}
con(){
if(strcpy(desti, "HK")||strcpy(desti, "hk")){
tfare= 8500;
printf("\n\t\tTicket Fare: %.2f", tfare);
strcpy(destina,"Hong Kong");
}
else if(strcpy(desti, "BK")||strcpy(desti, "bk")){
tfare= 7500;
printf("\n\t\tTicket Fare: %.2f", tfare);
strcpy(destina,"Bangkok");
}
else if(strcpy(desti, "KL")||strcpy(desti, "kl")){
tfare= 7900;
printf("\n\t\tTicket Fare: %.2f", tfare);
strcpy(destina,"Kualala Lumpur");
}
else if(strcpy(desti, "TP")||strcpy(desti, "tp")){
tfare= 8300;
printf("\n\t\tTicket Fare: %.2f", tfare);
strcpy(destina,"Taipe");
}
else{
printf("\n\t\tInvalid Input");
tfare=0;
}
if(cla== 'E'|| cla=='e'){
cfare= 1500;
printf("\n\t\tClass Fare: %.2f", cfare);
strcpy(clana,"Economy");
}
else if(cla== 'T'|| cla=='t'){
cfare= 2500;
printf("\n\t\tClass Fare: %.2f", cfare);
strcpy(clana,"Tourist");
}
else if(cla== 'F'|| cla=='f'){
cfare= 3500;
printf("\n\t\tClass Fare: %.2f", cfare);
strcpy(clana,"First Class");
}
}
netcomp(){
nfare = tfare+ cfare;
gtnfare +=nfare;
tran += 1;
}
out(){
printf("\n\n\t\tTicket NO.: %d", ticket);
printf("\n\t\tPassenger's Name: %s", pass);
printf("\n\t\tDestination: %s", destina);
printf("\n\t\tClass: %s", clana);
printf("\n\t\tNet Fare: %f", nfare);
}
我正在创建一个程序,该程序应该是包含票价、舱位和总计的旅行付款。现在运行的唯一问题是目标中的 if else 语句,即我需要 2 个字符,当我输入其他目标代码(例如 kl、bk 或 tp)时,它仅输出 hk 中的语句而不是其余部分
最佳答案
您可能希望将 strcpy
替换为 strcmp
strcpy(desti, "HK")
会将文本“HK”复制到 desti
中,该函数将会成功,因为 strcpy
返回一个指向目标的指针它将是一个非零值,每次都会执行第一个 if 语句。
strcpy 的手册页
请注意,当它们相等时,strcmp
返回 0。
有关 strcmp 的更多信息
另请注意
- 您无法将
strcpy(desti, "HK");
转换为char desti[2]
,因为您没有为 null 终止符分配空间。您必须执行char desti[3]
;如果您想将其用作字符串。
关于C 语言 if else 语句中的字符串复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52524105/