strtok函数的返回值(C语言,strtok返回值为NULL是为什么)

本文目录
- C语言,strtok返回值为NULL是为什么
- C++ strtok函数
- c的strtok用法,result = strtok( NULL, delims )理解不了啊
- c++里面,函数strtok怎么用
- 怎样理解C语言中string.h里strtok()函数
- C语言运用strtok函数使字符串倒叙输出的程序应该没问题不理解写的reverse函数啥意思可以解释下吗
- C语言中strtok用法
- C语言字符串处理函数strtok
C语言,strtok返回值为NULL是为什么
您好,很高兴能为您解决问题。
如果出错,您可以在出错后马上调用GetLastError,函数会返回一个整数。返回之后,你可以去网上查GetLastError返回值的含义。比如126就是找不到模块句柄的意思。
希望我的解答能帮到您,望采纳!
C++ strtok函数
调用方式 : char *strtok(char *str1, char *str2);
说明 : strtok()函数的原型在string.h中
功能说明:函数strtok()返回字符串str1中指向一个由str2所指定的字符或者字符串的分隔符的指 针,当没有要返回的分隔符时,就返回一个空指针。
函数strtok()实际上修改了有str1指向的字符串。每次找到一个分隔符后,一个空(NULL)就被放到分隔符处,函数用这种方法来连续查找该字符串。
例子:
#include 《string.h》
#include 《stdio.h》
int main()
{
char *p;
char str=“This is a test ,and you can use it“;
p = strtok(str,“ “); // 注意,此时得到的 p为指向字符串:“This“,即在第一个分隔 符前面的字符串,即每次找到一个分隔符后,一个空(NULL)就被放到分隔符处,所以此时NULL指针指向后面的字符串:“is a test ,and you can use it“。
printf(“%s\n“,p); // 此时显示:This
do
{
p = strtok(NULL, “,“); // NULL 即为上面返回的指针,即字符串:
// “is a test ,and you can use it“。
if(p)
printf(“|%s“,p);
}while(p);
system(“pause“);
return 0;
}
c的strtok用法,result = strtok( NULL, delims )理解不了啊
首次调用result = strtok( str, delims );时,内部有个static char *result指针指向了str
运行后result指向了now后的#
之后的循环
result = strtok( NULL, delims );
可以看成if 参数==NULL 仍然使用上次的#位置(存在静态变量中)开始继续找,直到找到下一个分隔符#。
反复以NULL做参数,找到输出所有的#
c++里面,函数strtok怎么用
strtok:
分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
功能:
分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
例如:strtok(“abc,def,ghi“,“,“),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多。
函数使用:
strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。
c
#include《string.h》
#include《stdio.h》
int main(void)
{
char input=“abc,d“;
char*p;
/*strtok places a NULL terminator
infront of the token,if found*/
p=strtok(input,“,“);
if(p)
printf(“%s\n“,p);
/*Asecond call to strtok using a NULL
as the first parameter returns a pointer
to the character following the token*/
p=strtok(NULL,“,“);
if(p)
printf(“%s\n“,p);
return0;
}
c++
#include《iostream》
#include《cstring》
using namespace std;
int main()
{
char sentence=“This is a sentence with 7 tokens“;
cout 《《 “The string to be tokenized is:\n“ 《《 sentence 《《 “\n\nThe tokens are:\n\n“;
char *tokenPtr=strtok(sentence,““);
while(tokenPtr!=NULL) {
cout《《tokenPtr《《’\n’;
tokenPtr=strtok(NULL,““);
}
//cout 《《 “After strtok,sentence=“ 《《 tokenPtr《《endl;return0;
}
函数第一次调用需设置两个参数。第一次分割的结果,返回串中第一个 ’,’ 之前的字符串,也就是上面的程序第一次输出abc。
第二次调用该函数strtok(NULL,“,“),第一个参数设置为NULL。结果返回分割依据后面的字串,即第二次输出d。
strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置
线程安全的函数叫strtok_r,ca
运用strtok来判断ip或者mac的时候务必要先用其他的方法判断’.’或’:’的个数,因为用strtok截断的话,比如:“192..168.0...8...“这个字符串,strtok只会截取四次,中间的...无论多少都会被当作一个key
其他相关信息
下面的说明摘自于最新的Linux内核2.6.29,说明了这个函数已经不再使用,由速度更快的strsep()代替
/** linux/lib/string.c** Copyright (C) 1991, 1992 Linus Torvalds*//** stupid library routines.. The optimized versions should generally be found
* as inline code in 《asm-xx/string.h》
* These are buggy as well..
* * Fri Jun 25 1999, Ingo Oeser 《ioe@informatik.tu-chemnitz.de》
* - Added strsep() which will replace strtok() soon (because strsep() is
* reentrant and should be faster). Use only strsep() in new code, please.
** * Sat Feb 09 2002, Jason Thomas 《jason@topic.com.au》,
* Matthew Hawkins 《matt@mh.dropbear.id.au》
* - Kissed strtok() goodbye
*/
怎样理解C语言中string.h里strtok()函数
网上找的资料,你看看
原型:char *strtok(char *s, char *delim);
功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’\0′)来替换,直到找遍整个字符串。
说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。strtok在s中查找包含在delim中的字符并用NULL(’\0′)来替换,直到找遍整个字符串。
返回值:从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点
1.#include 《stdio.h》2.#include 《string.h》3.int main(int argc,char **argv)
4.{
5.char * buf1=“aaa, ,a, ,,,bbb-c,,,ee|abc“;
6./* Establish string and get the first token: */
7.char* token = strtok( buf1, “,-|“);
8.while( token != NULL )
9. {
10./* While there are tokens in “string“ */
11. printf( “%s “, token );
12./* Get next token: */
13. token = strtok( NULL, “,-|“);
14. }
15.return 0;
16.}
C语言运用strtok函数使字符串倒叙输出的程序应该没问题不理解写的reverse函数啥意思可以解释下吗
这一整段代码的功能是,用户输入一句话,按照单词进行逆序,但是单词内部还是原来的顺序。比如输入“I am a good boy”,处理之后输出的是boy good a am I”。
先理解一下strtok这个函数的功能,函数原型
char* strtok(char* s, const char* delim)
它的第一个输入参数是需要处理的字符,第二个输入参数是分隔符,返回值是分割后的字符串。
比如第一个参数输入“I am a good boy”,第二个参数是“ ”(空格);
strtok(I am a good boy”, “ “);
则返回值是“I”。
如果需要继续获得后面分割的字符串,就需要继续调用
strtok(NULL,“ “); // 第二次返回值,就是“am”
直到最后一个分割字符子串,返回值是0;
reverse()是个递归调用,如果还有分割字符串,则继续调用自己,直到最后一个分割子串,开始打印;接着返回上一次调用,打印前一个分割子串。最后就变成逆序了。
C语言中strtok用法
strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。
strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置
线程安全的函数叫strtok_r,ca。
运用strtok来判断ip或者mac的时候务必要先用其他的方法判断’.’或’:’的个数,因为用strtok截断的话,比如:“192..168.0...8...“这个字符串,strtok只会截取四次,中间的...无论多少都会被当作一个key。
函数strtok保存string中标记后面的下一个字符的指针,并返回当前标记的指针。
后面再调用strtok时,第一个参数为NULL,继续将string标记化。NULL参数表示调用strtok继续从string中上次调用 strtok时保存的位置开始标记化。
如果调用strtok时已经没有标记,则strtok返回NULL。注意strtok修改输入字符串,因此,如果调用strtok之后还要在程序中使用这个字符串,则应复制这个字 符串。
C语言字符串处理函数strtok
#include 《string.h》 char *strtok( char *str1, const char *str2 ); 功能:函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,第一次调用str1 指向作为标记的分隔符。之后所以的调用str1 都应为NULL。
例如:
char str = “now # is the time for all # good men to come to the # aid of their country“; char delims = “#“; char *result = NULL; result = strtok( str, delims ); while( result != NULL ) { printf( “result is \“%s\“\n“, result ); result = strtok( NULL, delims ); } 以上代码的运行结果是:
result is “now “ result is “ is the time for all “ result is “ good men to come to the “ result is “ aid of their country“ 相关主题:

更多文章:
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00








