я сталкиваюсь с проблемой, когда принимаю имя студента как символ? Это потому, что scanf()
является буферизованной строкой, т.е. когда вы вводите один символ , а затем нажимаете ENTER , это также один действительный символ, поэтому вы вводите два символа в качестве входных данных. Чтобы избежать этой проблемы с буферизацией, введите пробел перед %c
. например,
for(i = 0;i < 2;i++) { /* also you had s[2] means, you should start from i = 0 */
scanf(" %c%d%f",&s[i].name,&s[i].rn,&s[i].marks);
}
Основная проблема - for(i=1;i<=2;i++)
, поскольку вы начинаете с s[1]
и ожидаете сохранения в s[2]
, но s[2]
, как вы объявили, нет
struct student s[2];
, что означает s[0]
& s[1]
, решение начинается с i = 0
.