aSii_GeNc
14/08/2007, 11:02
Merhaba
Yeni C ye başlayan biriyim.Pek terimleri hakkında bilgim yok.
Aşağıdaki kodn bir struct içindeki bir listeki sıralamaya yarıyor.
Çalışıyor fakat neden warning veriyor çözemedim yardımcı olurmusunuz?
Yazdığım kodlar:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifndef QSORT_CAST
#define QSORT_CAST chan_cmp
#endif /* QSORT_CAST */
struct ccounts {
char *chan;
unsigned long int *cnt;
};
struct ccounts kanallar[] =
{
{"abcdef2", 10},
{"aabcdef", 20},
{"aabcdef45", 5}
};
int ccount_c = sizeof(kanallar) / sizeof(struct ccounts);
int print_chan(struct ccounts *c);
int chan_cmp (const struct ccounts *c1, const struct ccounts *c2) {
if (c1->cnt > c2->cnt)
return 1;
else if (c1->cnt < c2->cnt)
return -1;
else
return 0;
}
int main () {
int i;
printf("Siralamadan once\n");
for (i = 0; i < ccount_c; i++)
print_chan(&kanallar[i]);
qsort(kanallar, ccount_c,sizeof(struct ccounts), QSORT_CAST);
printf("Siralamadan sonra\n");
for (i = 0; i < ccount_c; i++)
print_chan(&kanallar[i]);
}
int print_chan(struct ccounts *c) {
printf("%s d %d\n",c->chan, c->cnt);
}
Aldığım Uyarı mesajları:
dmin@pardus denemelerin $ gcc -o deneme deneme.c
deneme.c:16: warning: initialization makes pointer from integer without a cast
deneme.c:17: warning: initialization makes pointer from integer without a cast
deneme.c:18: warning: initialization makes pointer from integer without a cast
deneme.c: In function `main':
deneme.c:39: warning: passing arg 4 of `qsort' from incompatible pointer type
admin@pardus denemelerin $ ./deneme
Siralamadan once
abcdef2 d 10
aabcdef d 20
aabcdef45 d 5
Siralamadan sonra
aabcdef45 d 5
abcdef2 d 10
aabcdef d 20
admin@pardus denemelerin $
Yeni C ye başlayan biriyim.Pek terimleri hakkında bilgim yok.
Aşağıdaki kodn bir struct içindeki bir listeki sıralamaya yarıyor.
Çalışıyor fakat neden warning veriyor çözemedim yardımcı olurmusunuz?
Yazdığım kodlar:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifndef QSORT_CAST
#define QSORT_CAST chan_cmp
#endif /* QSORT_CAST */
struct ccounts {
char *chan;
unsigned long int *cnt;
};
struct ccounts kanallar[] =
{
{"abcdef2", 10},
{"aabcdef", 20},
{"aabcdef45", 5}
};
int ccount_c = sizeof(kanallar) / sizeof(struct ccounts);
int print_chan(struct ccounts *c);
int chan_cmp (const struct ccounts *c1, const struct ccounts *c2) {
if (c1->cnt > c2->cnt)
return 1;
else if (c1->cnt < c2->cnt)
return -1;
else
return 0;
}
int main () {
int i;
printf("Siralamadan once\n");
for (i = 0; i < ccount_c; i++)
print_chan(&kanallar[i]);
qsort(kanallar, ccount_c,sizeof(struct ccounts), QSORT_CAST);
printf("Siralamadan sonra\n");
for (i = 0; i < ccount_c; i++)
print_chan(&kanallar[i]);
}
int print_chan(struct ccounts *c) {
printf("%s d %d\n",c->chan, c->cnt);
}
Aldığım Uyarı mesajları:
dmin@pardus denemelerin $ gcc -o deneme deneme.c
deneme.c:16: warning: initialization makes pointer from integer without a cast
deneme.c:17: warning: initialization makes pointer from integer without a cast
deneme.c:18: warning: initialization makes pointer from integer without a cast
deneme.c: In function `main':
deneme.c:39: warning: passing arg 4 of `qsort' from incompatible pointer type
admin@pardus denemelerin $ ./deneme
Siralamadan once
abcdef2 d 10
aabcdef d 20
aabcdef45 d 5
Siralamadan sonra
aabcdef45 d 5
abcdef2 d 10
aabcdef d 20
admin@pardus denemelerin $