void inc2(char *mdate) { int i = 0, j = 0; int nb_days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int year = 0, month = 0; int max[] = {9,9,9,9,1,2,3,1,2,3,5,9,5,9}; while (mdate[i] != '\0') { if (i < 4) year = year*10 + (mdate[i]-'0'); else if (mdate[i] > '9' || mdate[i] < '0') { } else if (j < 2) {month = (month*10)+(mdate[i]-'0'); j++;} i++; } i--; nb_days[1]=((year%4)==0 && ((year%100)!=0 || (year%400)==0)) ? 29:28; max[6] = nb_days[month-1]/10; max[7] = nb_days[month-1]%10; j = 13; while(i >= 0) { if (mdate[i] > '9' || mdate[i] < '0') {i--; continue;} if (mdate[i] - '0' < max[j]) { mdate[i]++; break; } else if (mdate[i] != '9' && ((j==7 && mdate[i-1]-'0' < max[6]) || (j==5 && mdate[i-1]-'0' < max[4]))) { mdate[i]++; break; } else { mdate[i] = ((j==7 && mdate[i-1]-'0' == max[6]) || (j==5 && mdate[i-1]-'0' == max[4]))?'1':'0'; } i--; j--; } }