Frage zu String Funktion bei c
-
Guten Abend allerseits!
Und zwar muss ich einen Taschenrechner in C programmieren und habe mir dabei gedacht, dass ich den eingeben string zerlegen muss. Dabei finde ich die Funktion
char* strtok(char* s1, char* s2);
sehr hilfreich. Leider ist es nur so, dass er nur das Zeichen s2 in null umwandelt. Ich brauche für den Taschenrechner aber mehrere Umwandlungen für verschiedene Zeichen.
Gibt es eine Möglichkeit dafür, dass er sobald er ein "+" "-" oder / findet es sofort uwandelt??
-
strtok ist keine gute Idee dafür, denn du musst eher einen lexikalischen Scanner schreiben, sprich, du musst erkennen, was für einen Ausdruck da eingegeben wurde. Schau dir das hier an: http://en.wikipedia.org/wiki/Bottom-up_parsing damit lässt sich sowas eigentlich ganz einfach schreiben. Im Netz gibt es bestimmt viele Beispiele. Ich kenne ein Beispiel im C++ Buch von Stroustrup und ein anderes im Linux/Unix Systemprogrammierung von Helmut Heorld. Der Code im Helmuts Bsp ist sehr klein, das könnte ich noch hier reinkopieren, das könnte dir dabei helfen, einen besseren Taschenrechner zu schreiben.
//edit:
strtok funktioniert so, dass s2 die Liste mit den Trennzeichen hat, z.b. "(+-*)". strtok wird s2 sicherlich nicht verändern, da hast du irgendwo einen Fehler gemacht.
-
Ich soll ja den Taschenrechner so schreiben, dass er nicht unbedingt die Punkt vor Strich Rechnung berücksichtigen muss. Also das muss nicht unbedingt sein.
Ich weiß schon dass die Funktion strtok s2 nicht verändert. Aber er verändert doch s1 oder nicht?
Oder zumindest ist der Rückgabewert ein Veränderung von s1, indem jedes Zeichen was in s2 vorkommt in s1 verändert wird.
Kann denn nicht s2 aus mehren Zeichen bestehen??
-
s1 wird schon verändert. Am besten ist es eine Kopie der Eingabe zu erstellen und mit ihr strtok benutzen.
-
ok Danke auf jeden Fall erst mal habe aber jetzt noch eine andere Frage:
Besteht irgendwie die möglichkeit dass ich in einen String zwei verschiedene Werte an einer Stelle schreibe. Also z.b. das string[0]="+-"?
-
chicoo schrieb:
Besteht irgendwie die möglichkeit dass ich in einen String zwei verschiedene Werte an einer Stelle schreibe. Also z.b. das string[0]="+-"?
nein, macht auch keinen Sinn.