2016-05-01 4 views
0
typedef struct node { 
    double value; 
    struct node *prev; 
} node_t; 

In main:ersten Knoten des Stapels brüchige - c

if(fgets(str, MAX_LENGTH, stdin)) { 
    char *token; 
    token = strtok(str, " "); 
    while(token != NULL) { 
     if(strtod(token, NULL) != 0) { //Issue here 
      push(&stack, new_node(strtod(token, NULL))); 
     } 
...... 

für einen Testfall, wenn mein Eingang „1 2“ und dann das erste Mal, dass ich einen Knoten auf den Stapel, node_t drücken. prev = NULL (wie gewünscht) und der Wert ist 1 (wie gewünscht). Beim zweiten Mal in der Schleife wird der erste Knoten im Stapel standardmäßig verwendet (prev = NULL und value = 0). Dies geschieht in der if-Anweisung (siehe oben kommentiert).

Warum ist mein erster Knoten standardmäßig?

+0

Warum ist das als C++ markiert? –

Antwort

0

Wenn diese mit strtod() Sie haben innerhalb einer Schleife zu 'bekommen das erste Token getrennt', versuchen ...

token = strtod(token, " ");//get first token and do some test cases with it... 
    while(token != NULL) { 
    if(strtod(token, NULL) != 0) { 
     push(&stack, new_node(strtod(token, NULL))); 
    } 

Try this, hoffentlich funktioniert es, und das war das Problem ..

+0

Token ist ein String - token = strtod (Token, "") gibt einen Fehler wegen inkompatibler Typen –

+0

@ Koverman47 Sorry, das war als ein Beispiel gemeint ... sei es der erste Wert, den du liest ... – LearningCODE

Verwandte Themen