C 在手动填充的数组中搜索值

C Searching A Value In Manually Filled Array

我正在尝试编写一个程序,其中包含一个由用户填充的数组,并在其中找到一个由用户指定的值,然后如果它找到并打印 array.But 中的那个数字,它只工作array.My 代码的第一个元素如下:

  `void searchh(int arr[],int search,int number,int counter);

int main()
{    
int number,search,i;
int counter=0;


printf("How many numbers will you enter?");
scanf("%d",&number);

int array[number];

for(i=0;i<number;i++){
    printf("Please enter the %d. element of the array:",i+1);
    scanf("%d",&array[i]);
}


printf("Please enter the number that you're looking for:");
scanf("%d",&search);

searchh(array,search,number,counter);


return 0;
}

void searchh(int arr[],int search,int number,int counter){
int i,c;
int key=search;
int num=number;
counter=0;

int arrsize=(int)(sizeof(arr)/sizeof(int));
int arrayent[(int)(sizeof(num)/sizeof(int))];


for(i=0;i<arrsize;i++)
{

if(arr[i]==key)
{
   arrayent[counter]=i;
   counter++;
}
}

printf("The number that you're looking for which is %d is found %d times.\nLocations:",key,counter);

if(counter>0){
for(c=0;c<sizeof(arrayent)/sizeof(int);c++){
    printf("%d\n",arrayent[c]);
}
}

else
    printf("Number doesn't exist!!");


}`

和输出:

感谢您的帮助。

int arrsize=(int)(sizeof(arr)/sizeof(int));

这已经不是您认为的那样了。 sizeof(arr) - 如果指针大小为 4 个字节,则可以为 4。换句话说,您不能像函数内部那样检查数组大小,arr 会衰减到数组第一个元素的指针。因此 sizeof(arr) 将 return 指针的大小,可以是 4 或 8。您需要将数组元素的数量作为参数传递给函数 - 在您的情况下是 number

这个:

int arrayent[(int)(sizeof(num)/sizeof(int))];

也奇怪。 numintsizeof(num)sizeof(int) 将是相同的 - 除法会给你 1.


IMO 这两行

int arrsize=(int)(sizeof(arr)/sizeof(int));
int arrayent[(int)(sizeof(num)/sizeof(int))];

应该就这样

int arrsize = number;
int arrayent[number];

PS。也尝试使用调试器来帮助您解决一些问题。