解决strtok While循环中断外部While循环问题

时间:2020-02-10 22:22:58

标签: c

如果我删除strtok的while循环,则外部while循环可以继续直到我键入exit。但是外部的while循环与内部的strtok循环一起中断。我不知道为什么会这样。

#include <stdio.h>
#include <stdlib.h> // For exit() function
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
#include <memory.h>
#include <stdlib.h>

int main()
{
    char input[1024];
    fgets(input,1024,stdin);
    do
    {
        printf("%s\n",input);
        char* token = strtok(input, " ");
        while (token) {
            printf("%s\n", token);
            token = strtok(NULL, " ");
        }
        fgets(input,1024,stdin);
    }while (strcmp(input, "exit\n") == 1);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

代替这些陈述

    fgets(input,1024,stdin);
}while (strcmp(input, "exit\n") == 1)

写下以下内容

}while ( fgets(input,1024,stdin) != NULL && strcmp(input, "exit\n") != 0 );

如果两个字符串不相等,函数strcmp可以返回任何非零值。