删除字符串中与另一个字符串中的任何字符匹配的字符

阿尔基

我正在尝试创建一个挤压函数,该函数删除字符串s1中与字符串中任何字符匹配的每个字符s2

当我编译时,它并不表示有任何错误,但是由于某种原因没有打印出任何内容。有人可以告诉我我在这里做错了什么吗?

void squeeze(char s1[], char s2[]);

int main() {
    char s1[] = "abc";
    char s2[] = "cde";
    squeeze(s1, s2);
    printf("%s\t%s", s1, s2); // nothing is being printed...
}

void squeeze(char s1[], char s2[])
{
    int i,j,k; 
    /* i is original s1 index
     * j is s2 index
     * k is new s1 index
     */

    for (i = k = 0; s1[i] != '0'; i++){
        for (j = 0; s2[j] != '0'; j++){
            if (s1[i] == s2[j])
                s1[k++] = s1[i];
        }
    }

    s1[k] = '\0';
}
苏甘

上面的代码由于在条件的第二项中放置了'0'而不是'\ 0',因此出现了“分段故障(堆芯被甩)”错误。即使进行了校正,输出对于s1也是“ c”,而不是所需的“ ab”。以下代码给出了s1所需的输出“ ab”。

#include <stdio.h>

char * squeeze(char s1[], char s2[]);
int isCharPresent(char c, char s[]);

int main(int argc, char** argv) {
    char s1[] = "abc";
    char s2[] = "cde";
    char * s = squeeze(s1, s2);
    printf("%s\t%s\t%s", s, s1, s2);
    return 0;
}

char * squeeze(char s1[], char s2[]) {
    int i, k;
    char *s = malloc(sizeof (s1));
    for (i = k = 0; s1[i] != '\0'; i++) {
        if (isCharPresent(s1[i], s2) == 0) {
            s[k++] = s1[i];
        }
    }
    return s;
}

int isCharPresent(char c, char s[]) {
    int i;
    for (i = 0; s[i] != '\0'; ++i) {
        if (c == s[i]) {
            return 1;
        }
    }
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从与另一个字符串中的任何字符匹配的字符串中删除每个字符

如何从另一个字符串中删除任何出现的字符串?

检查一个字符串是否在另一个字符串中的任何字符的最佳方法javascript

PHP-检查一个字符串是否包含另一个字符串中的任何字符

从Java中的另一个字符串中删除字符串

匹配另一个字符串中的子字符串

我无法计算另一个字符串中的匹配字符串

用字符串中的另一个字符替换“字符”

如果第一个字符与列表中的另一个字符串元素匹配,则删除字符串列表中的字符串元素

删除另一个字符串中带有{{xxx}}的字符串

使用另一个字符串从字符串中删除空格

从熊猫数据框中的列中找到一个字符串,该字符串与另一个字符串列表中的任何项目匹配

如何从另一个字符串中删除一个字符串?

计算一个字符串在另一个字符串中每个字符的出现次数

匹配从给定字符串中至少偏离一个字符的任何字符串

如何用 MySQL 中另一个字符串和一个字段的串联替换任何字符串

编写一个函数,将一个字符串中的第一个匹配项从另一个字符串中删除。

从字符串中删除匹配的第一个字符

从SQL Server中的另一个字符串获取仅字符字符串

用另一个字符串替换字符串中的字符?

无法用另一个字符串替换字符串中的字符

如何正确找到另一个字符串中的匹配字符

JavaScript获取字符串在另一个字符串中的最后一个字符的位置

检查一个字符串是否包含Ruby中另一个字符串的所有字符

用不包括模式的另一个字符串替换字符串中的一个字符

从字符串中删除出现在Kotlin中另一个字符串中的字符

根据另一个字符串/数组,从1个字符串/数组中删除值

如何比较两个字符串数组并将匹配值存储在另一个字符串数组中?

Bash命令确定一组字符串中的哪个字符串是另一个字符串的前缀