我在一组字符串中得到不同出现的总数时遇到了一些麻烦,让我说我有一个这样的结构,已经为每个成员填充了品牌。结构[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);
}
我似乎无法正确地做到这一点,如果可能的话,我想要一些帮助。
答案 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;
}