请解释我的strtok()
功能工作.手册说它把字符串分成了令牌.我无法从手册中了解它实际上是做什么的.
我添加了手表str
并*pch
检查其工作情况,当第一个while循环发生时,内容str
仅为"this".如何在屏幕上显示下面显示的输出?
/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Splitting string "- This, a sample string." into tokens: This a sample string
我有一个我想要标记的字符串.但是C strtok()
函数需要我的字符串char*
.我怎么能这么做呢?
我试过了:
token = strtok(str.c_str(), " ");
Run Code Online (Sandbox Code Playgroud)
因为把它变成a const char*
而不是a 而失败了char*
我想知道如何取一个字符串,用分隔符(例如空格)将其拆分为2,并将2个部分分配给2个单独的字符串.我尝试过strtok()
但无济于事.
如何使用strtok_r而不是strtok来执行此操作?
char *pchE = strtok(NULL, " ");
Run Code Online (Sandbox Code Playgroud)
现在我正在努力使用strtok_r
......但有时我会遇到问题strtol
.我有一个我执行10次(同时)的线程.
char *savedEndd1;
char *nomeClass = strtok_r(lineClasses, " ", &savedEndd1);
char *readLessonS = strtok_r (NULL, " ", &savedEndd1);
char *readNTurma = strtok_r(NULL, " ", &savedEndd1);
if (readNTurma==NULL)
printf("CLASS STRTOL begin %s %s\n",nomeClass, readLessonS );
int numberNTurma = strtol(readNTurma, NULL, 10);
Run Code Online (Sandbox Code Playgroud)
而且我已经readNTurma == NULL
好几次了......为什么会这样?不明白为什么会这样NULL
?
strtok
我需要注意哪些特性是不安全的(在缓冲区溢出方面)?
对我来说有点奇怪的是strtok_s
(在Visual C++中它是"安全的")有一个额外的"上下文"参数,但看起来它在其他方面是相同的......它是相同的,还是它实际上是不同的?
可能有人给我解释一下什么样的差异之间存在着strtok()
和strsep()
?它们的优点和缺点是什么?为什么我会选择一个而不是另一个.
如何将字符串拆分为一个标记,然后将它们保存在一个数组中?
具体来说,我有一个字符串"abc/qwe/jkh"
.我想分开"/"
,然后将令牌保存到数组中.
输出将是这样的
array[0] = "abc"
array[1] = "qwe"
array[2] = "jkh"
Run Code Online (Sandbox Code Playgroud)
请帮我
什么在PHP中使用函数strtok(),如何比其他字符串函数更好地做同样的事情?
我正在尝试在需要能够在Linux和Windows中编译的C程序中使用此函数.起初我尝试使用strtok_r,但是当我在windows上编译时,它抱怨函数不存在并且说它会假设它是一个外部函数,但后来失败了.然后我用strtok_s编译了!然后我尝试在Linux上,但现在它抱怨有一个"未定义的引用'strtok_s'".
是一个Windows唯一的功能,另一个是Linux功能??? 我能做些什么才能在两者上编译?
这是strtok()的解释.
#include <string.h>
char* strtok( char* s1,
const char* s2 );*
Run Code Online (Sandbox Code Playgroud)
第一次调用strtok()会返回指向s1指向的字符串中第一个标记的指针.对strtok()的后续调用必须将NULL指针作为第一个参数传递,以便获取字符串中的下一个标记.
但我不知道,为什么你必须传递NULL指针才能获得字符串中的下一个标记.我搜索了大约15分钟,但没有在互联网上找到解释.