c - 列出数组中不重复的字符

标签 c arrays

嗯,我的问题很简单,但我已经被困了很长一段时间了。我想编写一个程序,它接受两个数组作为参数,然后按照出现的顺序在其中写入不重复的字母。

示例:

$ ./a.out bulwark blue
bulwarke

$ ./a.out fresh feeling
freshling

$ ./a.out final01 test02
final01tes2

我尝试了几种方法,但不知道如何在没有 malloc 的情况下做到这一点。棘手的是,我不能使用malloc ,唯一授权的功能是“write”

P.S:抱歉我的英语不好

最佳答案

使用辅助数组来指示哪个字母已被使用:

void func(char arr1[],char arr2[])
{
    int hash[256] = {0};
    for (int i=0; arr1[i]!=0; i++)
    {
        unsigned char letter = (unsigned char)arr1[i];
        if (hash[letter] == 0)
        {
            hash[letter] = 1;
            printf("%c",letter);
        }
    }
    for (int i=0; arr2[i]!=0; i++)
    {
        unsigned char letter = (unsigned char)arr2[i];
        if (hash[letter] == 0)
        {
            hash[letter] = 1;
            printf("%c",letter);
        }
    }
    printf("\n");
}

注意:此代码假定每个输入字符串(arr1arr2)均以 0 字符结尾。

关于c - 列出数组中不重复的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205611/

相关文章:

c - 保留 C 库中的 Ruby 对象,避免被垃圾回收

javascript - 如何使用变量选择javascript数组键?

arrays - 声明一个常量数组

c - C中是否允许 boolean 返回类型?

c - 使用等待和信号让父进程等待子进程结束

c - 重新分配内存拦截

java - 从随机用户输入创建字符串数组

arrays - 用excel VBA比较两个数组

javascript - JS 递归查找父子数组中的元素

c - 为什么转换是隐式的?