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