当前位置:  技术问答>linux和unix

strtok()问题

    来源: 互联网  发布时间:2015-09-24

    本文导语:  调用 strtok()函数执行的时候为什么老是提示Segmentation fault错误。简单的程序如下:  #include   #include         #include         #include         #include         #include               main()      ...

调用 strtok()函数执行的时候为什么老是提示Segmentation fault错误。简单的程序如下:
 #include  
#include        
#include        
#include        
#include        
#include        

      main()
      {
        char *s="Golden:Global:View";
        char *d=":";
        char *p;

        p=strtok(s,d);
        printf("%sn",s);
     

        return 0;
       }

|
enidzhangyun(白云) ( ) 信誉:100  2005-04-13 15:44:00  得分: 0  
    gaoxianfeng(高) :使用之前加上memset(New_p, 0, sizeof(New_p));

  strncpy(New_p,buf,strlen(buf)); //???

:)
你知道buf 这个str多大吗?
如果大于New_p的容量会如何?
  strncpy(New_p,buf,Min(sizeof(New_p)-1,strlen(buf))); 
  New_p[sizeof(New_p)-1] = '';
 strncpy主要就是怕人用strcpy造成内存异常


 

|
strtok会修改原字符串,你的远程不能修改,
临时申明一个变量,然后将s拷贝到这个变量中,将这个变量代替s传给strtok

欢迎访问我的个人网站 www.linuxc.net

|
你被网上的例子误导

strtok(s,d);
这个函数是要查找s字串里面是否有d字符
如果有就会把s字串里的d字符用''替换 这时候就有写入了
而你的char *s="Golden:Global:View"; 是静态区的变量 不可写的
如果你用strcpy(s, "test"); 也会内存异常

所以你应该改成
char s[]="Golden:Global:View";

|
原型:extern char *strtok(char *s, char *delim);
        
  用法:#include 
  
  功能:分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。
  
  说明:首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。
        strtok在s中查找包含在delim中的字符并用NULL('')来替换,直到找遍整个字符串。
        返回指向下一个标记串。当没有标记串时则返回空字符NULL。
strtok会修改字符串内容

|
借地方问一下,char* s="abcd";和char s[]="abcd";这两条语句的区别是否就在于第一个s只是一个指向常量字符串的指针,而第二个s则是申请了一段内存来存储变量,而该变量的内容被初始化为"abcd"

|
是的 
而第二个s则是申请了一段内存来存储变量,而该变量的内容被初始化为"abcd"

其实是   abcd 五个字符

|
strtok_r是线程安全

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请解释函数strtok()
  • g++中strtok_s is not declear in this scope
  • 关于strtok函数
  • 请问strtok(NULL,delimits)是什么意思?
  • strtok的怪問題
  • C语言切割多层字符串(strtok_r strtok使用方法)
  • C++中strtok()函数的用法介绍
  • mmap后能用strtok或者srtok_r吗?
  • 这边也来问一下,strtok函数的返回值是什么?
  • Strtok_r函数的功能如何实现
  • strtok的多线程实现


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3