我已经创建了一个程序,可以找到两个数组中包含的值以及这些值的计数,但是我的程序不起作用:
#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);
}
任何帮助都将不胜感激。
答案 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'?