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

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))); 
     } 
...... 

を、私の入力は、私は、スタックにnode_tのノードをプッシュ初めて、次に「1 2」である場合。 prev = NULL(必要に応じて)、値は1(必要に応じて)です。 2回目のループで、スタックの最初のノードがデフォルトになります(prev = NULL、value = 0)。これはif文で発生します(上記のコメントを参照)。

最初のノードがデフォルト設定になっているのはなぜですか?

+0

なぜこれはC++としてタグ付けされていますか? –

答えて

0

あなたは「別に最初のトークンを取得」する必要がループ内strtod()を使用する場合は、

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))); 
    } 

がうまくいけばそれが動作し、それはあなたの問題だった、これを試してみてください...これを試してみてください。..

+0

トークンは文字列です - token = strtod(トークン、 "")は互換性のないタイプのためエラーを返します –

+0

@ Koverman47申し訳ありませんが、例として...あなたが読んでいる最初の値になっています... – LearningCODE

関連する問題