Я новичок в C..so, пожалуйста, несите меня .. Я хочу вызвать функцию printReceipt (char, char, char) в функции calculatePrice (char), но он сказал, что есть ошибка для неверного преобразования из char в char при вызове функции для printReceipt. Кто-нибудь может мне помочь, пожалуйста!Неверное преобразование из 'char *' в 'char [-fpermissive]
double calculatePrice(char cust) //calculate total price for each customer and return the value
{
char code[5], size, top;
double discount, drPrice, topPrice, price;
printf("\n\t\t\t\tEnter the order's code :");
scanf("%s", code);
printf("\n\t\t\t\tEnter size of cup : ");
scanf(" %c", &size);
printf("\n\t\t\t\tEnter topping : ");
scanf(" %c", &top);
if((strcmp(code, "T1")==0) || (strcmp(code, "T2")==0) || (strcmp(code, "T3")==0) ||(strcmp(code, "T4")==0) || (strcmp(code, "T5")==0)) //drinks code
{
if(size == 'R')
drPrice = 4.90;
else if(size == 'L')
drPrice = 5.90;
}
if((strcmp(code, "CH1")==0) || (strcmp(code, "CH2")==0) || (strcmp(code, "CH3")==0) || (strcmp(code, "CH4")==0) || (strcmp(code, "CH5")==0)) //drinks code
{
if(size == 'R')
drPrice = 6.90;
else if(size == 'L')
drPrice = 7.90;
}
if((strcmp(code, "C2")==0) || (strcmp(code, "C3")==0) || (strcmp(code, "C5")==0)) //drinks code
drPrice = 5.90;
if((strcmp(code, "S1")==0) || (strcmp(code, "S2")==0) || (strcmp(code, "S5")==0) || (strcmp(code, "S7")==0) || (strcmp(code, "S9")==0)) //drinks code
drPrice = 6.90;
if((strcmp(code, "S3")==0) || (strcmp(code, "S4")==0) || (strcmp(code, "S6")==0) || (strcmp(code, "S8")==0) || (strcmp(code, "S10")==0) || (strcmp(code, "S11")==0)) //drinks code
drPrice = 5.90;
if(strcmp(code, "C1") == 0) //drinks code
drPrice = 3.90;
if(strcmp(code, "C4") == 0) //drinks code
drPrice = 4.90;
if(top == 'B' || top == 'G' || top == 'J' || top == 'P' || top == 'A') //topping type
topPrice = 0.60;
if(top == 'X') //if no topping is selected
topPrice = 0.00;
if(cust == 'M') //customer type
price = 0.8 * (topPrice + drPrice);
else if(cust == 'S') //customer type
price = 0.85 * (topPrice + drPrice);
else if(cust == 'R') //customer type
price = topPrice + drPrice;
printReceipt(code, size, top);
return price; //return value
}
void printReceipt(char code, char size, char top)
{
FILE *f = fopen("receipt.txt", "w");
if(f == NULL)
{
printf("Error opening file!\n");
exit(1);
}
fprintf(f, "bla bla bla");
fclose(f);
}
код голец [5] не ** символ ** как требуется функцией – amdixon
Ну, 'code' не является' char', это массив символов, который будет передан функции как указатель на его первый элемент, т. е. как символ "char *". На данный момент неясно, как вы используете 'code' в' printReceipt', но я думаю, вы хотите иметь 'char * code' или, может быть, даже' const char * code' в качестве аргумента для этой функции. –
Примечание: с таким маленьким буфером символов для 'code' вы должны защищать от переполнения буфера, указав максимальное количество символов при сканировании:' scanf («% 4s», code) '. –