Probleme bei der Zerteilung von einem String
-
Hallo!
Ich möchte gerne einen Rechner für die Addition zwei großer Zahlen programmieren,
wobei die Eingabe der beiden Zahlen A und B in einer Zeile erfolgen soll.
Wenn zwei Zahlen und ein "+" eingegeben werden, funktioniert das Ganze.char eingabe[30]; char summe[50]; char A[15]; char B[15]; printf("A+B "); fgets(eingabe, 30, stdin); strcpy(A,strtok(eingabe,"+")); strcpy(B,strtok(NULL,"\n")); printf("%s+%s",A,B);
ABER:
Wenn nach dem "+" keine weitere Eingabe erfolgt, stürzt das Programm ab.
Wie kann ich für einen solchen Fall die Zahl "0" in den String "B" schreiben?mfg
newbie2
-
mit *strlen(char ); kannst du die länge einer zeichenkette abfragen
-
Wie bereits erwähnt, soll der gesamte Term in einer Zeile eingegeben werden.
Da die beiden Summanden unterschiedlich lang sein dürfen,
bringt mich size_t strlen(const char)* nicht sonderlich weiter.
Trotzdem Danke!
-
doch: du könntest zb die länge des 2. strings abfragen.
wenn das nicht geht, kannst du einfach den string zeichen für zeichen checken und gleichzeitig splitten (habs ned getestet, hoffentlich kein error)int i=0,ergebnis; bool plus_found=false; char *a=eingabe,*b=NULL; while(eingabe[i] && !plus_found) { if(eingabe[i]=='+') { plus_found=true; eingabe[i]='\0'; b=&eingabe[i+1]; } i++; } if(b && *a && *b) { ergebnis=atoi(a)+atoi(b); }
-
strtok gibt in diesem Fall Null zurück, also kannst du es einfach so machen:
char eingabe[30]; char summe[50]; char A[15]="0"; char B[15]="0"; char * test; printf("A+B "); fgets(eingabe, 30, stdin); test = strtok(eingabe,"+"); if(test)strcpy(A,test); test = strtok(NULL,"\n"); if(test)strcpy(B,test); printf("%s+%s",A,B);
Gruß
Entyl Sa
-
Hurra, es funktioniert!
VIELEN DANK an Frauke2k und Entyl Sa!
mfg
newbie2