嗯,我的问题很简单,但我已经被困了很长一段时间了。我想编写一个程序,它接受两个数组作为参数,然后按照出现的顺序在其中写入不重复的字母。
示例:
$ ./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");
}
注意:此代码假定每个输入字符串(arr1
和 arr2
)均以 0 字符结尾。
关于c - 列出数组中不重复的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205611/