私は、Cを使用して配列から最大および最小の要素を見つける簡単なプログラムを実装していますが、予期せぬ出力が得られることがあります。 this出力を確認してください。そして、以下のコードをチェックしてください。入力に応じて出力が得られません
#include<stdio.h>
#include<stdlib.h>
int largest(int *input)
{
int i=0,large=0;
for(;i<input[i]!='\0';i++)
{
if(input[i]>large)
large=input[i];
}
return large;
}
int smallest(int *input)
{
int i=0,small;
small=input[i];
for(;i<input[i]!='\0';i++)
{
if(input[i]<small)
small=input[i];
}
return small;
}
void main()
{
int *input;
int size,i=0,large,small;
printf("Enter size of array:\n");
scanf("%d",&size);
printf("Enter Numbers:\n");
input=(int *)malloc(size * sizeof(int));
for(;i<size;i++)
{
scanf("%d",input+i);
}
large=largest(input);
printf("Largest element is:%d, ",large);
small=smallest(input);
printf("Smallest element is:%d\n",small);
}
サイズを関数に渡すと、プログラムが正常に動作しています。上記の機能を実装することにより、
ここで何が起こっているのかわかりません。解決策を見つけるのを手伝ってください。
'私は、[入力を< (int *)malloc(size * sizeof(int)); ' - >' input = calloc(size(size * sizeof(int));} +1、sizeof(int));) – BLUEPIXY
@BLUEPIXYはい、それはcalloc関数を使って完璧に動作しています。ご協力ありがとうございました。しかし、まだ私はmallocを使用している間に動作していない理由を理解できませんでしたか?説明していただけますか? –
あなたは '0'と比較しようとしていますが、入力のデータのどこにも存在しません。 – BLUEPIXY