[C语言][编程]将字符串分割到字符串数组中

      学习Redis的sds.c文件中,有一个关于将字符串分割到字符串数组中的代码,我学习并实现了一下,但没有考虑内存问题和其它的一些误操作的问题,换言之,只实现了最基本的功能。

//该程序实现的是将字符串分割成子字符串
/*例如输入"123/456/7/89/1","/"作为分隔符,
程序会返回:123 456 7 89 1
*/
#include
#include

void splitlen(char* str,int str_len,char* del,int del_len){
    int cmp_len=str_len-del_len+1;
    char result[10][10];
    int index=0,start=0;
    int j=0;
    if(memcmp(str,del,del_len)==0)//去掉前面的分隔符,例如输入路径时:/home/zhangbo/C++/code,把最前面的"/"去掉
    {
        j=del_len;
        start=del_len;
    }
    for(;j

      在实现过程中,我遇到了一些问题,总结在下面:

1.一个数组存放的是字符串,如何将这个数组输出?

#include

int main(){
    char* str[]={"abc","def","opq"};

    int len=3;

    for(int i=0;i

int main(){
    char* str[3];//字符串个数不可省略
    str[0]="abcd";
    str[1]="efgh";
    str[2]="ijkl";
    int len=3;

    for(int i=0;i
2.char **arr和char* arr[]的区别

      char* arr[]可以在声明的时候确定数组的大小,但是char** arr却不可


      之后我上网找了下相关资料,发现利用string.h中的strtok函数会更加方便。现将实现贴在下面,方便以后查找。

     

#include 
#include 

int main(void)
{
        char str[] = "/home/zhangbo/C++/code/test";/*待分隔的原字符串*/
        char seg[] = "/"; /*分隔符这里为逗号comma,分隔符可以为你指定的,如分号,空格等*/
        char charlist[50][50]={""};/*指定分隔后子字符串存储的位置,这里定义二维字符串数组*/
        int i =0;
        char *substr= strtok(str, seg);/*利用现成的分割函数,substr为分割出来的子字符串*/

        while (substr != NULL) {
                strcpy(charlist[i],substr);/*把新分割出来的子字符串substr拷贝到要存储的charlsit中*/
                i++;
                printf("%s\n", substr);
                substr = strtok(NULL,seg);/*在第一次调用时,strtok()必需给予参数str字符串,
                往后的调用则将参数str设置成NULL。每次调用成功则返回被分割出片段的指针。*/
        }
        getchar();/*press enter key to continue*/
        return 0;
}


1

你可能感兴趣的:(C++)