-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

切れ端:

#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 に答える
3

C で文字列を読む必要があります。これは文字列として表現する必要がありstrcmp()ます。手動ループではなく、eg を使用して比較を行う必要があります。structまた、 s について学習し、文字の配列だけではなく、そのような配列を使用することからも大きなメリットが得られます。

于 2012-05-08T09:17:47.370 に答える