C,计算字符串数组中的唯一字符串

时间:2015-03-10 01:31:08

标签: c arrays string

使用C,我有一个字符串数组,有些是重复的。我试图计算唯一字符串的数量。代码:

 for(i=0; i<size; i++){
        flag=0;
        if(strcmp(" ", tArr[i])!=0){
            for(j=i; j<size; j++){
                if(strcmp(tArr[i], tArr[j])==0){
                    if (flag<1){
                        flag=1;
                        k++;
                    }
                    strcpy(tArr[j], " ");
                }
            }
        }
    }
  1. 第一个for循环遍历整个数组
  2. 每次迭代将标志设置为零
  3. 使用空格作为另一个标志,如果索引为空,则表示该单词已被计算,移至下一个索引
  4. 将该索引与之后的每个索引进行比较,因此j = i
  5. 如果二级索引与第一个
  6. 匹配
  7. 如果还没找到那个词
  8. 触发旗帜
  9. 添加到k,唯一字数
  10. 将该单词的每个剩余实例设置为空格,以匹配第3行

    不是将k设置为唯一字数,而是将其设置为总字数。使用打印的标志我能够告诉该功能一直通过,甚至到线后

  11. 我仍然无法告诉它如何在最外面的for循环的每次迭代中进行第8行。

1 个答案:

答案 0 :(得分:3)

调整代码,尝试以下方法:

for (i = 0; i < size; i++) {
    for (j = i + 1; j < size; j++)
        if (strcmp(tArr[i], tArr[j]) == 0)
            break;
    if (j == size)
        unique_count++;
}

如果您只是计算,则不需要销毁重复项,但是如果您仍然希望这样做,我建议使用空字符串而不是包含空格的字符串。