我想写一个C程序,从char数组中删除重复的值。例如,如果我有数组:
char arr[11]={'a','b','c','a','d','b','r','q','q','s','u'};
我想存储没有重复值的新数组。
所以我想要
char b[8]={'a','b','c','d','r','q','s','u'};
到目前为止我所拥有的:
#include <stdio.h>
int main()
{
int n=10;
int count = 0;
int c, d;
char a[7], b[7];
char arr[11]={'a','b','c','a','d','b','r','q','q','s','u'};
for (c = 0; c < n; c++)
{
for (d = 0; d < count; d++)
{
if(arr[c] == b[d])
break;
}
if (d == count)
{
b[count] = arr[c];
count++;
}
}
printf("Array obtained after removing duplicate elements:n");
for (c = 0; c < count; c++)
printf("%dn", b[c]);
return 0;
}
然而,当我运行这个程序时,我得到的是随机数,而不是实际值。
您需要将值打印为字符,而不是十进制数字(%d
就是这样做的(。尝试printf("%cn", b[c]);
你看到的打印的整数不是"0";"随机"——它们是这些字符的ASCII码。
printf("%d\n",b[c](;
打印ASCII值。输出为:
97 (ASCII of a)
98 (ASCII of b)
99 (ASCII of c)
100 (ASCII of d)
114 (ASCII of r)
113 (ASCII of q)
115 (ASCII of s)
解决方案:使用%c
打印字符printf("%cn", b[c]);