strtok 函数 的疑问
时间:2011-12-24
来源:互联网
c++ 中:
<cstring>
原型:
char *strtok(char *s, const char *delim);
注意返回值。。。
一般用法如下:
char s[]=strtok(source,',');
source是源串,
source被分割后,重新组合,生成了,木有,的串。。。。
问题1:如果soeurce是 堆中的内存。。。。。
那么char s[] 岂不是有问题。。。。。 s是数组, 数组在栈中 ,栈中的数组保存的内容为堆中的字符串。。。。
问题2:
strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置
什么叫静态分配?
我猜测这是与动态相对。。。 意思就是说: 使用的空间在 静态全局区中。。。。。
一般字符串 除了全局字符串之外,都在栈或 堆中。。。。。
为什么要 使用静态的空间呢?
还有 即使在静态空间中, 为什么不安全呢???
问题很多,,希望 不嫌麻烦,帮忙解答一下。。。
谢谢了啊
<cstring>
原型:
char *strtok(char *s, const char *delim);
注意返回值。。。
一般用法如下:
char s[]=strtok(source,',');
source是源串,
source被分割后,重新组合,生成了,木有,的串。。。。
问题1:如果soeurce是 堆中的内存。。。。。
那么char s[] 岂不是有问题。。。。。 s是数组, 数组在栈中 ,栈中的数组保存的内容为堆中的字符串。。。。
问题2:
strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置
什么叫静态分配?
我猜测这是与动态相对。。。 意思就是说: 使用的空间在 静态全局区中。。。。。
一般字符串 除了全局字符串之外,都在栈或 堆中。。。。。
为什么要 使用静态的空间呢?
还有 即使在静态空间中, 为什么不安全呢???
问题很多,,希望 不嫌麻烦,帮忙解答一下。。。
谢谢了啊
作者: caddor2011 发布时间: 2011-12-24
char s[]=strtok(source,',');
这个用法是有问题的,不能这样调用,strtok返回的是char *指针,可能不同的编译器实现会不同,但它要么的确是返回的静态区的值(c函数是不能返回临时指针变量的),要么返回的是原指针的内容
你可以看下
char *source="aaaa";
char s[]=source; //语法有错
正确的用法:
char *s=strtok(source,',');
这个用法是有问题的,不能这样调用,strtok返回的是char *指针,可能不同的编译器实现会不同,但它要么的确是返回的静态区的值(c函数是不能返回临时指针变量的),要么返回的是原指针的内容
你可以看下
char *source="aaaa";
char s[]=source; //语法有错
正确的用法:
char *s=strtok(source,',');
作者: keiy 发布时间: 2011-12-24
strtok是分割字符串,查找中间最长的单元
http://blog.csdn.net/hongwenjun/article/details/6710209
char *strtok(char *str1, const char *str2);
功能:函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。
如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,
第一次调用str1 指向作为标记的分隔符。之后所以的调用str1 都应为NULL。
http://blog.csdn.net/hongwenjun/article/details/6710209
char *strtok(char *str1, const char *str2);
功能:函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。
如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,
第一次调用str1 指向作为标记的分隔符。之后所以的调用str1 都应为NULL。
作者: hongwenjun 发布时间: 2011-12-24
谁能解释一下,
线程安全问题
线程安全问题
作者: caddor2011 发布时间: 2011-12-24
第一个参数非NULL的时候会使用一个static变量存储下次扫描的起始位置.
作者: qq120848369 发布时间: 2011-12-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28