字符串为什么无法输入😢

#include<stdio.h>
struct stud
{
char id[10];
int score;
}s[100];
int main()
{
int i,j=0,n;
char b[10];
scanf("%d",&n);
for(i=0;i<n;i++)
{
gets(s[i].id);
scanf("%d",&s[i].score);
}
scanf("%s",b);
for(i=0;i<n;i++)
{
if(b==s[i].id)
{
printf("%d\n",s[i].score);
j++;
}
}
if(j==0)
printf("no found\n");
}
为什么字符串b无法输入?

b 输入之前 ,先用 getChar() 把 换行符 接收了,不然会有影响

代码修改了一下:

#include<stdio.h>
#include <string.h>
struct stud
{
    char id[10];
    int score;
}s[100];

int main()
{
    int i,j=0,n;
    char b[10];
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)
    {
        gets(s[i].id);
        scanf("%d",&(s[i].score));
        getchar();
    }
    scanf("%s",b);
    for(i=0;i<n;i++)
    {
        if(strcmp(b, s[i].id) == 0)
        {
            printf("%d\n",s[i].score);
            j++;
        }
    }
    if(j==0)
        printf("no found\n");
}

img

img

换行符引起的问题是在gets(s[i].id);那里,因为前面有个换行符残留在缓冲区,所以读取了空字符串。
解决办法:在scanf("%d",&n);后面加一句getchar();