使用指针时出错

时间:2017-03-18 02:36:20

标签: c pointers

我是C的新手,但之前我做过一些java编程。我的程序尝试按时间顺序(年,月,日)对日期列表进行排序。但我遇到了这个错误。

  

警告:赋值使得整数指针没有强制转换[启用]   默认情况下]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    char* month;
    int day;
    int year;
} date;

int sort(const void* a, const void* b)
{

    date* date1 = (date*)a;
    date* date2 = (date*)b;

    if (date2->year != date1->year) {
        int year2 = date2->year;
        int year1 = date2->year;
        if (year1 < 14) {
            year1 = year1 + 100;
        }
        if (year2 < 14) {
            year2 = year2 + 100;
        }
        int yearcompare = year2 - year1;
        return -yearcompare;
    }
    return 0;
}

output(date* ar, int i, int n)
{

    for (i = 0; i < n; i++) {
        //printf("Enter the date (month day year) i n the following format: text number number");
        // printf("%s ", ar[i].month);
        //printf("%d ", ar[i].day);
        printf("%d\n", ar[i].year);
    }
}

int main()
{
    int n;
    int i;
    int MIN_SIZE = 0;
    int MAX_SIZE = 1000;
    date* ar;

    while (1) {
        printf("Enter number of dates you want to enter (between 1 and 10000):\n");
        scanf("%d", &n);

        if (n < MIN_SIZE) {

            printf("You have entered a number lower than 0\n");
        }

        if (n > MAX_SIZE) {

            printf("You have entered a number higher than 1000\n");
        }

        else {

            break;
        }
    }

    //date* ar = malloc(sizeof(int) * n);
    //ALLOCATE MEMORY
ar = allocateStruct(n);
    printf("Enter the date (month day year) in the following format: text, number(between 1 and 31), number(between 00 and 12): \n");
    for (i = 0; i < n; i++) {
        scanf("%s", ar[i].month);
        scanf("%d", &ar[i].day);
        scanf("%d", &ar[i].year);
    }

    qsort(ar, n, sizeof(date), sort);

    output(ar, i, n);

    return 0;
}

0 个答案:

没有答案