Я получаю странную проблему при использовании scanf()
для хранения данных в объединении.Ошибка при использовании scanf() для ввода пользователем
Вот мой код
#include <stdio.h>
union Student
{
float score;
char grade;
};
int main(void)
{
union Student jack;
printf("Enter student score : ");
scanf("%f", &jack.score);
printf("Score : %f", jack.score);
jack.score=0;
printf("Enter student grade : ");
scanf("%c", &jack.grade);
printf("Grade : %c", jack.grade);
}
я получаю следующий вывод
[email protected]:~/Desktop$ ./union
Enter student score : 12
Score : 12.000000Enter student grade : Grade :
, но если я изменить мой код:
#include <stdio.h>
union Student
{
float score;
char grade;
};
int main(void)
{
union Student jack;
printf("Enter student grade : ");
scanf("%c", &jack.grade);
printf("Grade : %c\n", jack.grade);
printf("Enter student score : ");
scanf("%f", &jack.score);
printf("Score : %f\n", jack.score);
}
Это дает мне точный вывод [правильный вывод ]. Я знаю, что это не очень хороший пример, но может кто-нибудь объяснить мне, что происходит не так?
Измененный код: Добавить \ n перед форматированием строки. [ЗсапЕ ("\ п% с", & ч);]
#include <stdio.h>
union Student
{
float score;
char grade;
};
int main(void)
{
union Student jack;
printf("Enter student score : ");
scanf("%f", &jack.score);
printf("Score : %f", jack.score);
jack.score=0;
printf("Enter student grade : ");
scanf("\n%c", &jack.grade);
printf("Grade : %c", jack.grade);
}
Что вы подразумеваете под точный выход? вы можете немного объяснить. – mhshams
@mohammad shams Точный выход = правильный вывод – Searock
Что случилось с моим вопросом? Почему меня проголосовали? – Searock