要找到数组之间的常见值,还需要查找计数

时间:2012-05-08 09:08:44

标签: c arrays string

我已经创建了一个程序,可以找到两个数组中包含的值以及这些值的计数,但是我的程序不起作用:

#include<stdio.h>
#define SIZE 100
void search(char arr1[10][10],char arr2[10][10])
    {       //int x = sizeof(arr1); int y = sizeof(arr2)
        int j,k;
            for( j=0;j<SIZE-1;j++)
            {   
                for( k=0;k<SIZE-1;k++)
                {   int count = 0;
                    if(arr1[j][0] == arr2[k][0])
                    {
                        count += 1;
                    }

                }
                return count;   
            printf("StudentID\t : BooksTanken\t\n");
                    printf("%c \t\t %d \t\n",arr1[j][0],count); }
    }
int main()
{
//  char array1[2][1],array2[5][1];
    char  array1[3][2]={
                                    {'ID1','srini'},
                                    {'ID2','Albie'},
                                    {'ID3','Kaasi'}};
            char array2[6][2]={
                                    {'ID1','OOPS'},
                                    {'ID2','STS'},
                                    {'ID1','STS'},
                                    {'ID1','CTC'},
                                    {'ID3','MAT'},
                                    {'ID2','MAT'}};
    printf("We're Begining the Comaprison Here !!\n\n");

    search(array1,array2);
}

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

你需要阅读C中的字符串。这应该表示为字符串,你应该使用例如strcmp()进行比较,而不是手动循环。通过学习struct,并使用这些而不是裸阵列的数组,你也会受益匪浅。

答案 1 :(得分:3)

片段:

#define SIZE 100
void search(char arr1[10][10],char arr2[10][10])
....
           for( j=0;j<SIZE-1;j++)

....
char  array1[3][2]={
你知道差异吗? 100,10,3

EDITH:向您展示问题:

for (i < 0; i < SIZE-1; i++) {
   arr[i] = 0;
}

可以由编译器扩展为:

arr[0] = 0;
arr[1] = 0;
arr[2] = 0;
arr[3] = 0;
arr[4] = 0;
arr[5] = 0;
arr[6] = 0;
arr[7] = 0;

...     arr [98] = 0;

你的数组只为arr [0],arr [1],arr [2]分配了内存;所以参考arr [3]可能是件坏事......

EDITH 2:问题:为什么'SIZE-1'?