字符串数组中出现的次数

时间:2014-11-16 21:23:29

标签: c arrays string count

我在一组字符串中得到不同出现的总数时遇到了一些麻烦,让我说我有一个这样的结构,已经为每个成员填充了品牌。结构[1]。品牌="菲亚特"等等。

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);
}

我似乎无法正确地做到这一点,如果可能的话,我想要一些帮助。

1 个答案:

答案 0 :(得分:2)

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

对于列表中的每个项目,首先假设它是唯一的。检查列表中的每个先前项目;如果找到匹配项,请注意它的是唯一的并且会中断。如果您在unique仍为真的情况下退出循环,请递增计数。

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;
}