【发布时间】:2016-01-28 20:23:54
【问题描述】:
假设我有一个 char 数组,并且我想构造一个只包含唯一字符的新数组(即该数组只包含每个字符出现一次)。这是对 C 入门书籍中练习的一部分的回应,其中尚未介绍指针等高级概念。所以,答案不应该使用指针。
int i, j, n;
char list[MAX_SIZE], unique_list[MAX_SIZE];
char curr;
n = 0;
for(i = 0; i < strlen(list) ; ++i){
curr = list[i];
for (j = 0; j <= n; ++j){
if (unique_list[j] == curr)
break;
else
unique_list[n++] = curr;
}
}
但是,当我运行它时,它似乎不起作用。显然它陷入了一个永久循环,unique_list[j] 始终等于curr(从 char 数组中读取的当前字符)。但是我没有初始化 unique_list 那么为什么它总是包含与从主数组中读取的字符相同的字符?
【问题讨论】:
-
@user3386109 太好了!如果把它写成答案,我会接受的。谢谢!
-
我通过 MASh 修复了答案,以便您可以接受。