-3

我制作了一个程序来查找两个数组中包含的值以及这些值的计数,但是我的程序不起作用:

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

任何帮助,将不胜感激。

4

2 回答 2

3

您需要阅读 C 中的字符串。这应该表示为字符串,并且您应该使用 egstrcmp()进行比较,而不是手动循环。您还将从了解structs 以及使用此类而不是裸字符数组中受益匪浅。

于 2012-05-08T09:17:47.370 回答
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”?

于 2012-05-08T09:19:55.827 回答