Этот блок кода является частью более крупного кода базы данных на C. Эта часть оценивается студентами. Требования заключаются в использовании typedef unsigned char uint8 вместо простого int. На всю жизнь я не могу заставить это работать. Когда я использую %c в scanf, он пропускает. В печати, если иногда печатает первую цифру. Итак, это код с int, и он работает нормально, как мне заставить его работать с uint8 или unsigned char???
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include <inttypes.h>
#include <string.h>
//typedef unsigned char uint8;
typedef unsigned int uint8;
int main(void)
{
uint8 grades_t[3], gr_c, g_temp;
for (gr_c = 0; gr_c < 3;)
{
printf("please enter the grade (0-100) of subject no%d: ", gr_c+1);
scanf("%d", &g_temp);
if (g_temp < 0 || g_temp > 100) //only accept values between 0-100
{
printf("please enter valid grade from 0 - 100!\n");
gr_c --; //if value is out of range, decrement
}
else //store value
{
grades_t[gr_c] = g_temp;
}
gr_c++;
}
printf("grade = %d\n", grades_t[0]); //unite test
printf("grade = %d\n", grades_t[1]);
printf("grade = %d", grades_t[2]);
return 0;
}