我刚刚注意到一个警告(使用Visual Studio)strtok是不安全的,strtok_s不是。为什么它不安全?什么是不安全的?
我的问题的第一部分已回答here,但不安全的含义是什么?与此相关的问题和可能的问题是什么?
答案 0 :(得分:2)
strtok不是线程安全的。如果两个或多个线程同时调用strtok,则结果将是未定义的。我在这里再现了另一个用户Jonathan Leffler的答案:
请注意strtok()在处理它时会破坏其输入。它是 也不是线程安全的,你必须确保没有其他功能 你从你的解析器调用使用strtok(),并没有函数 调用你的解析器使用strtok()。功能条件 被叫通常不会太繁重;但是,在库代码中,第二个 condition(没有调用函数也使用strtok())不是 强制执行。
对此问题的回答是:Dealing with input in C