#include <stdio.h>
int b;
int main()
{
int a, c;
printf("Enter the number of students \n");
scanf("%d", &a);
struct studinfo{
char name[50];
int roll;
float marks;
};
struct studinfo s[10];
for(int i = 0; i <= a; i++)
{
printf("Enter the Name :\n");
scanf("%[^\n]s", s[i].name); //THIS ONE HERE
printf("\n");
printf("Enter the roll no. \n");
scanf("%d", &s[i].roll);
printf("\n");
printf("Enter the marks\n");
scanf("%f", &s[i].marks);
}
for(int i = 0; i<= a; i++)
{
printf("Name: %s\n", s[i].name);
printf("Roll no: %d\n", s[i].roll);
printf("Marks: %f", s[i].marks);
}
return 0;
}
Works when I remove the scanf to enter number of students.
#include <stdio.h>
int b; int main() { int a, c; printf("Enter the number of students \n");
struct studinfo{
char name[50];
int roll;
float marks;
};
struct studinfo s[10];
for(int i = 0; i <= a; i++)
{
printf("Enter the Name :\n");
scanf("%[^\n]s", s[i].name);
printf("\n");
printf("Enter the roll no. \n");
scanf("%d", &s[i].roll);
printf("\n");
printf("Enter the marks\n");
scanf("%f", &s[i].marks);
}
for(int i = 0; i<= a; i++)
{
printf("Name: %s\n", s[i].name);
printf("Roll no: %d\n", s[i].roll);
printf("Marks: %f", s[i].marks);
}
return 0;
}
-> This happenes because the Scanf initially used takes everything except for '\n' which is later is read by the next scanf which skips when it reads a '\n'.
-> Ive tried Fgets and gets too but still doesnt work.
-
The output im getting is;
after I enter the number of students, it just skips the scanf to enter the name and just executes scanf to enter the roll no.
scanf("\n%[^\n]", s[i].name);
Good luck
Tips