c使用多个分隔符拆分数组

c使用多个分隔符拆分数组,c,arrays,split,C,Arrays,Split,我对c非常陌生,需要将“/w/x:y///z”的字符*按“/”或“:”拆分成一个字符数组,这样将得到一个“,”w“,”x“,”y“,”空的输出 inti; int j; int len=strlen(自身); int l=斯特伦(德利姆); 内部控制; 整数计数=0; char*self={/w/x:y///z}; char*delim={“/”}; 对于(j=0;j

我对c非常陌生,需要将“/w/x:y///z”的字符*按“/”或“:”拆分成一个字符数组,这样将得到一个“,”w“,”x“,”y“,”空的输出

inti;
int j;
int len=strlen(自身);
int l=斯特伦(德利姆);
内部控制;
整数计数=0;
char*self={/w/x:y///z};
char*delim={“/”};
对于(j=0;j
到目前为止,我已经计算出需要删除多少个字符,我知道我需要使用strtok


任何帮助都将不胜感激!提前感谢:)

这是一个替换字符串中的字符然后追加的简单示例

#包括
#包括
#包括
// ...
const char*self=“/w/x:y///z”;
常量字符*replace=“/:”;//他们中的任何一个
const int self_len=strlen(self);
const int replace_len=strlen(replace);
字符字符串[self_len+1];/+1表示结尾处的NULL
//--示例实现
对于(int i=0;i
您的预期输出有点混乱。看起来您想用
\0
替换分隔符,但实际上您也删除了斜杠而不替换它。你能再具体点吗?对不起,我的错!我已经更新了。感谢您指出了这一点,为了澄清这一点,您只是想用空字符替换分隔符,并在字符串末尾附加一个NULL?空值的原因是什么?是的,这是正确的,它在我的规范中说,它需要在末尾至少有一个空值。您应该创建一个字符数组
strlen(self)+1
,然后只需迭代
self
,找出哪些字符与您的分隔符匹配,哪些不匹配,然后简单地进行相应的替换。然后,在最后一个元素后面附加一个
NULL
。确保它实际执行了您需要的操作。如果这是您的目标,那么它不会将单个令牌分离到一个数组中。
int i;
int j;
int len = strlen(self);
int l = strlen(delim);
int cont;
int count = 0;   
char* self = {"/w/x:y////z"};
char* delim = {"/:"};

for (j = 0; j < l; j++) {
    for (i = 0; i < len; i++) {
        if (self[i] == delim[j]) {
            count +=1;
        }
    }
}

count += 1;