c - 字符串数组中不同出现的次数

标签 c arrays string count

我在获取字符串数组中不同出现次数的总数时遇到了一些麻烦,假设我有一个这样的结构,其中已经为每个成员填满了品牌。 struct[1].brand="菲亚特"等。

typedef struct{
  char brand[25];
}CarStruct

CarStruct struct[100];

void countDifferentBrands(){
    char *cPtr;
    cPtr=malloc(sizeof(char)*100);
    int i,j, count=0;

    for(i=0;i<100;i++){
            for(j=0 ; j<100 ; j++){
                    if( strcmp( struct[i].brand ,(cPtr+j) ) == 0  ){                            
                            j=100;
                    }
                    else{
                            strcpy((cPtr+count), struct[i].brand);
                            count++;
                    }
            }
    }
    printf("Different brands:%d\n",count);
}

我似乎无法理解执行此操作的正确逻辑,如果可能的话,我需要一些帮助。

最佳答案

您不需要 cPtr -- 您可以直接比较不同的 CarStruct 项目。

对于列表中的每一项,开始时假设它是唯一的。将其与列表中的每个先前项目进行核对;如果找到匹配项,请注意它不是 唯一的,然后拆分。如果您在 unique 仍然为 true 的情况下退出循环,请增加您的计数。

for ( i = 0; i < 100; i++ ) {
  int unique = 1;

  for ( j = 0; j < i; j++ ) {
    if ( strcmp( struct[i].brand, struct[j].brand ) == 0  ) {
      unique = 0;
      break;
    }
  }

  if (unique)
    ++count;
}

关于c - 字符串数组中不同出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26962200/

相关文章:

c - 需要给初学者提供链表基本建议

c - 为什么C程序第10次循环结束时循环语句会出错?

c# - C#写的函数可以用C语言调用吗?

c - C中二维数组的最大尺寸

c++ - 在 C++ 中复制多维数组引用

javascript - 如何根据第一个值对数组进行排序?

c - 错误 : expected '=' , ','、 ';'、 'asm' 或 '__attribute__' 之前的 'void'

c++ - Arduino阵列内存使用

c - 请告诉我我做错了什么,因为 Monthstr2num 返回的值是错误的

json - 如何从 Scala 中的 jsonp 字符串中提取 json