Некорректны вывод unsigned char. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть код, вот он:
#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;
}
Проблема заключается в том, что при выводе в виде таблицы, за место date[i].month выводится тупо 0. Самое интересное, как я проверил, на момент ввода число равняется исходному... А после записи в массив структур становится равным 0. Почему так, можете объяснить? Заранее спасибо!

Решение задачи: «Некорректны вывод unsigned char.»

textual
Листинг программы
scanf("", &date[i].month);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5