Mein Programm versucht, einen Verkaufsautomaten zu simulieren. Alles funktioniert, außer für den Teil, wo die Münzen zurückgegeben werden oder die Änderung zurückgegeben wird. Ich versuche, die Menge der in die Maschine eingefügten Cents zu nehmen und diese in einen anderen Code außerhalb der Haupteingabe einzugeben, und gebe dann eine Zeichenkette zurück. Ist das in C möglich, weil ich eine Initialisierung bekomme, macht den Zeiger aus der ganzen Zahl ohne einen Zauberfehler. Wenn das nicht möglich ist, irgendwelche Ideen, wie ich das machen könnte?So geben Sie eine Zeichenfolge mit Variablen in c zurück
Danke!
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define NI 5
#define DI 10
#define QU 25
bool isValid(int num) {
return (num >= 10 && num <= 100);
}
bool isMultiple(int num) {
return (num % 5 == 0);
}
char *coinReturn(int insert) {
int dimes = insert/DI;
int remainder = insert % DI;
int nickels = remainder/NI;
int remainder2= nickels % NI;
char *m = ("Change returned. %d nickels and %d dimes\n",nickels, dimes);
return m;
}
int
main (int argc, char *argv[])
{ for (int i = 1; i != argc; ++i) {
int price = atoi(argv[i]);
if (!isValid(price)) {
printf("Price muse be from 10 cents to 100 cents.\n");
break;
} else if (!isMultiple(price)) {
printf("Price must be a multiple of 5.\n");
break;
} else {
printf(" Welcome to my Vending Machine!\n");
printf("Pop is %d cents. Please enter nickels, dimes, or quarters\n", price);
int cents = 0;
char coin = '\0';
while (cents <= price && coin != 'E') {
printf(" PLease enter a coin [NDQR]\n");
scanf (" %c", &coin);
if (coin == 'N'|| coin == 'n') {
cents = cents + NI;
printf(" You have inserted 5 cents\n");
}
else if (coin == 'd' || coin == 'D') {
cents = cents + DI;
printf("You have inserted 10 cents\n");
}
else if (coin == 'Q' || coin == 'q') {
cents = cents + QU;
printf("You have entered 25 cents\n");
}
else if (coin == 'R' || coin == 'r'){
printf("Change requested\n");
char *rtn2= coinReturn(cents);
printf("%s\n",rtn2);
} else {
printf("Unknown coin. Rejected.\n");
}
int balance = price - cents;
printf("You have entered a total of %d cents\n", cents);
if (balance > 0) {
printf("You must enter %d more cents\n", balance);
} else {
char *rtn = coinReturn(cents);
printf("%s\n",rtn);
cents = 0;
}
}
printf("DONE!\n");
return 0;
}
}
Aber ich muss die Aussage irgendwie zurückgeben. Kann ich das mit einem printf machen? – JVAN
Nein. Du könntest einen Puffer "malloc", benutze ['snprintf'] (http://www.cplusplus.com/reference/cstdio/snprintf/), um ihn zu formatieren, und gib ihn dann zurück. –
Aber alles, was Sie mit der Rückkehr tun, ist printf es. Warum druckst du nicht einfach in der Funktion? –