プログラムのコンパイルエラーを直したい
2. どう取り組んで(作ったプログラムはどれで
google検索をしたのですが、上手くいきませんでした。
こちらで質問させてもらいます。
3. どのようなエラーやトラブルで困っていて
エラー C2664 'void *bsearch(const void *,const void *,::size_t,::size_t,_CoreCrtNonSecureSearchSortCompareFunction)':
引数 5 を 'void (__cdecl *)(const void *,const void *)' から '_CoreCrtNonSecureSearchSortCompareFunction' へ変換できません。
4. 自分は何が解らないのか、知りたいのか
bsearchの(int(*)(const void *, const void *))int_cmpをどう改良すればいいのか分かりません。
5. 今のCの知識はどの程度なのか
基本的な文法知識は身についてると思います。
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
int int_cmp(const int *a, const int *b) {
if (*a < *b)
return -1;
else if (*a > *b)
return 1;
else
return 0;
}
int main(void) {
int i, nx, ky;
int *x;
int *p;
puts("bsearch関数による探索");
printf("要素数:");
scanf_s("%d", &nx);
x = (int *)calloc(nx, sizeof(int));
printf("昇順に入力してください\n");
printf("x[0]:");
scanf_s("%d", &x[0]);
for (i = 1; i < nx; i++) {
do {
printf("x[%d]:", i);
scanf_s("%d", &x[i]);
} while (x[i] < x[i - 1]);
}
printf("探す値:");
scanf_s("%d", &ky);
p = bsearch(&ky,
x,
nx,
sizeof(int),
(int(*)(const void *, const void *))int_cmp
);
if (p == NULL)
puts("探索に失敗しました");
else
printf("%dはx[%d]にあります\n", ky, (int)(p - x));
free(x);
return 0;
}