- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
传递给它的每个参数到底是什么,它返回什么?
它到底比普通的 strtok
好多少?
请给我最简单和最基本的解释。
最佳答案
这在 Appendix K (bounds checking interfaces)
中有详细说明的 ISO C11
标准。该标准的这个可选部分提供了标准核心部分中提供的现有功能的“更安全”(a) 版本。
原型(prototype)是:
char *strtok_s (
char * restrict s1,
rsize_t * restrict s1max,
const char * restrict s2,
char ** restrict ptr);
作为安全功能的一部分检查的运行时约束是:
s1max
, s2
, 和 ptr
必须全部为非空。s1
是一个空指针,那么*ptr
一定不能。*s1max
的值必须小于或等于 RSIZE_MAX
.*s1max
之内s1
的字符第一次通话*s1max
之内在后续调用中继续搜索的字符。安全方面是,如果违反了这些约束中的任何一个,则不会在 s1
上发生间接寻址。或 s2
并且没有值通过 ptr
存储.
除了那些额外的检查,它的工作原理与标准 strtok
几乎相同。函数,从 s1
返回标记由 s2
中的分隔符组分隔.我认为使用 ptr
使其成为线程安全的,因为它使用用户 (b) 提供的非静态状态。
(a) 被引用是因为如果您知道如何正确使用标准的大部分部分已经是安全的:-)
(b) 仍然缺少的一件事是拥有空标记的能力,例如:
field1||||field5
因为 strtok_s
(和原来的)对待||||
作为单个 分隔符,我们必须找到其他方法来做到这一点</rant>
:-)
关于找不到 strtok_s() 的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23064672/
我不明白为什么我的函数会收到以下消息(在 Visual Studio 2015 中)。 0xC0000005: Access violation reading location 0x0000002C
我试图在点上拆分我的实际 key ,然后在点上拆分后提取所有字段。 我的 key 看起来像这样 - t26.example.1136580077.colox 下面是我印象中的代码,应该没问题。但不知何
我已经使用 C++ 多年了,所以请多多包涵。 我是一名 C# 开发人员,但这个 C++ 控制台应用程序坏了,我现在正在管理它。我目前正在使用 VS2010 对其进行调试。 由于保密和代码量大,我不能贴
我正在使用 strtok_s 根据用户输入从 C 字符串中提取一个值。但是,我需要能够多次调用此函数。目前,当我这样做时,它在通过 strtok_s 时遇到了问题。我相信,因为它仍然指向不同的位置,而
传递给它的每个参数到底是什么,它返回什么? 它到底比普通的 strtok 好多少? 请给我最简单和最基本的解释。 最佳答案 这在 Appendix K (bounds checking interfa
15 年后我又回到了 C++ 领域……我只是不记得为什么我们需要指针的地址。就像在这个声明中: char *next_token = NULL; char *pszMozilla = strtok_s
我正在并行解析 3 个用特定分隔符分隔的值。 token1 = strtok_s(str1, separator, &nextToken1); token2 = strtok_s(str2, sepa
我正在尝试使用 strtok_s 函数标记嵌套循环中的两个字符串,但是我无法解析由 delimeter(;) 分隔的完整字符串,其代码是 char* string1Bigrams = "he;el;l
我正在尝试使用 strtok_s() 函数获取一个标记化的数组,但我还想包含标记化数组的分隔符。如果它是斜杠“/”,我希望数组在任何使用斜杠“/”字符创建的标记处都具有斜杠。 我编写了一个函数,它接受
我正在尝试根据此示例通过指定的分隔符拆分字符串:http://msdn.microsoft.com/en-us/library/ftsafwz3(v=VS.90).aspx 我的代码在 Visual
我是 C++ 的初学者,我正在尝试通过使用带有 strtok_s 的标记将文本从文本文件放入 vector 中。 我只能将一个文本推回并显示在 vector 中,我确信我的编码存在一些问题。 代码如下
似乎已经修改了我想拆分指定标记的原始字符串。 如果无法从内存中复制,它如何返回一个子字符串? 我也在寻找接受 const char* 或不修改原始字符串的替代方案。 或者仅const_cast 字符串
(大家好)我的strtok_s有一些问题。我写了这段代码(x64)。 #include #include #include BOOL TestMD5(CONST
strtok_s函数在vc8中有,vc7中没有。那么,在 vc7 中执行相当于 strtok_s 的函数(或代码)是什么? 最佳答案 看看this MSDN page . 据我所知,安全性增强 a)
我将 strtok_s 与分配的字符串一起使用。 上面的代码处理异常: char *string1 = NULL; string1 = (char*)LocalAlloc(LPTR, 100 * si
我正在尝试使用 C11 函数 strtok_s ,应该在 中定义,但是当我尝试使用它时,clang 给我一个链接错误。编译这个程序: #include int main() { char
我正在尝试从由空格 ("") 分隔的字符串中获取 token 。但是当字符串是 char * 类型时,下面的代码会导致应用程序崩溃。 #include #include int main(){ c
我有以下程序: #include #include #include int main(int argc, char *argv[]) { char *tp = NULL, *cp = N
我在这里的搜索得到了很多结果,但没有一个非常适合我,以便我可以找到问题的解决方案。 我正在使用 Visual Studio 2013 用 C 语言创建 Mathcad UserEFI DLL。我不想使
我是一名优秀的程序员,十分优秀!