我在获取字符串数组中不同出现次数的总数时遇到了一些麻烦,假设我有一个这样的结构,其中已经为每个成员填满了品牌。 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/