c++中在主函数定义一个字符数组,从键盘输入一串未排序的字符存入数组,在 被调函数中删除一维数组中所有相同的字符,使之保留一个,被 函数返回删除的字符个数,主函数输出删除重复字符后的字符串

怎么解决,求帮助。
被调函数部分怎么解决

子函数遍历每个元素,该元素与数组前面的元素进行比较,不同则放到数组头,相同则忽略。

#include <iostream>
using namespace std;
int fun(char *s)
{
    int i=0,j=0,k=0,num=0;
    while(s[i] != 0)
    {
        for(k=0;k<j;k++)
        {
            if(s[k] == s[i])
            {
                num++;
                break;
            }
        }
        if(k==j)
            s[j++] = s[i];
        i++;
    }
    s[j]=  0;
   return num; 
}
int main()
{
    char s[100];
    gets(s);
    cout<<"删除字符数量:"<<fun(s)<<endl;
    cout<<s;
    return 0;
}

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int bingo(string& str) {
    unordered_map<char, int> map;
    string tmp;
    for (char c : str) {
        map[c]++;
        if (map[c] > 1)

            continue;
        tmp += c;
    }
    str = tmp;
    return str.size();
}

int main()
{    
    string s;
    cin >> s;
    int n = bingo(s);
    cout << n << ":" << s;
    
}