Некорректны вывод unsigned char. - C (СИ)
Формулировка задачи:
Здравствуйте. Есть код, вот он:
Проблема заключается в том, что при выводе в виде таблицы, за место date[i].month выводится тупо 0. Самое интересное, как я проверил, на момент ввода число равняется исходному... А после записи в массив структур становится равным 0. Почему так, можете объяснить?
Заранее спасибо!
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#define MaxDate 2
struct DATE{
unsigned short int year;
unsigned char day;
unsigned char month;
};
int main(){
int i;
DATE date[MaxDate];
printf("\t\tTask #1. Date's comparison.\n");
printf("ATTENTION! Year must be more then 1930!\n");
for(i = 0; i < MaxDate; i++){
do{
printf("\nInput year of the [%d] event >> ", i+1);
scanf("%u", &date[i].year);
}
while(date[i].year <= 1930 || date[i].year > 2010);
do{
printf("Input month of the [%d] event >> ", i+1);
scanf("%uc", &date[i].month);
}
while(date[i].month <= 0 || date[i].month > 12);
do{
printf("Input day of the [%d] event >> ", i+1);
scanf("%uc", &date[i].day);
}
while(date[i].day <= 0 || date[i].day > 31);
}
printf("Result event-table:\n");
printf("| # | Date | Month | Year |");
for(i = 0; i < MaxDate; i++){
printf("\n| %d | %u | %u | %u |", i+1, date[i].day, date[i].month, date[i].year );
}
getch();
return 0;
}Решение задачи: «Некорректны вывод unsigned char.»
textual
Листинг программы
scanf("", &date[i].month);