首页 > 编程知识 正文

c语言分割字符串的方法,c语言中strstr函数的用法

时间:2023-05-05 14:38:22 阅读:144935 作者:3352

在c语言中使用strtok函数分隔字符串的c语言编程通常需要处理字符串问题,如strchr搜索、strtok函数分隔和转换函数atoi。 其中,strtok函数在使用时容易犯错误如下

voidstrsplit(char*content ) { char s[]='aa、bb、cc '; //使用数组的话剪切成功,使用指针的话失败? why? char *delim=','; char *p; char buffp[1024]; sprintf(buffp,strlen ) content ) 1,' %s ',content ); //复制并放入buff中,剪切printf(%d(n )、strcmp ) content、s ); printf (内容=% s (n ),s ); printf('%s ',strtok ) ) Buffp,delim ); while ((p=strtok null,delim ) ) ) )、p ); printf((n ); }如上所述,如果我们的s是数组,程序将正常分割完成。 但是,如果是s是一个指针,则程序会发生内存错误。

#问题,指针和数组有什么区别?

指针:指针是变量,但具体分析指向的内存区域是否可变。

这是因为指针是变量,但指针指向的值是字符串文字,存在常量区域。 例如

char *p=“aa,bb”;

char *q=“aa,bb”;

同时打印这两个地址时,将发送指向同一内容空间p=0040C101、q=0040C101的消息

因此,可以确定指针实际上指向的字符串是常量区域,不能修改。 尝试修正时,会发生如下内存错误p [0]=‘c’; //这是不允许的

数组:数组是临时申请的数组空间,可以修改内容

数组是在当前函数堆栈中打开的空间,可以直接修改数组。 例如,char s[]=“aa、bb ";==s [0]=‘c’; 那么char s[]=“ca,bb”; char *p='aa,bb '; char *q='aa,bb '; printf(p=%p,q=%p(n ),p,q ); //printf (-------- n ),如两个地址; char s[]='aa,bb '; char ss[]='aa,bb '; printf(s=%p,ss=%p(n ),s,ss ); //s和ss的地址是不同的输出结果。 因为p=0040C101,q=0040 c101---------- -,ss=0061FF1C

intsplit_str(char*data,const char* delim ) if ) data==null ) { return -1; } char buff[4096]; //snprintf(buff,strlen ) data ) 1,准备作为分隔“%s”,data )的数组接收的数组; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。