代码之家  ›  专栏  ›  技术社区  ›  Pratik K. Shah

strtok()函数在C中无法正常工作

  •  -1
  • Pratik K. Shah  · 技术社区  · 12 年前

    我已经申请了 strtok() 在C语言的循环中使用以下代码:

    printf("%s",line);
    printf("%d %d %d\n",atoi(strtok(line," ")),atoi(strtok(NULL," ")),atoi(strtok(NULL," ")) );
    

    输出为:

    103 70 105 150
    
    103 0 0
    
    115 17 127 21
    
    115 127 17
    
    10 108 105 97
    
    10 105 8
    
    13 122 43 8
    
    13 43 122
    
    50 187 35 71
    
    50 35 187
    

    我不知道为什么我把它弄得乱七八糟。

    即,在 103 70 105 150 我需要所有的数字以偶数分隔。

    1 回复  |  直到 3 年前
        1
  •  5
  •   Marian    12 年前

    在您的案例中,printf参数的求值顺序与您想象的相反。事实上,C中并没有严格定义参数求值的顺序,因此您应该将代码重新排列为如下所示:

    printf("%d ",atoi(strtok(line," ")));
    printf("%d ",atoi(strtok(NULL," ")));
    printf("%d\n",atoi(strtok(NULL," ")));