在使用scanf()读取多个字符串时出现问题,其中一个字符串变量出现以'/000'开始,导致直接为空串
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<stdbool.h>
struct student{
int No;
char name[10];
char gender[10];
int age;
int grades;
};
struct student students[10];
int cmp(const void *a,const void *b)
{
struct student L=*((struct student*)a);
struct student R=*((struct student*)b);
if(L.grades>R.grades)
return 1;
else
return -1;
}
int main()
{
int N;
scanf("%d",&N);
int length;
for(int i=0;i<N;i++){
char No[10],name[10],gender[10],age[2],grades[3];
scanf("%s%s%s%s%s",No,name,gender,age,grades);
sscanf(No,"%d",&students[i].No);
sscanf(name,"%s",&students[i].name);
sscanf(gender,"%s",&students[i].gender);
sscanf(age,"%d",&students[i].age);
sscanf(grades,"%d",&students[i].grades);
length=i;
}
qsort(students,length+1,sizeof(students[0]),cmp);
int j;
for(j=0;j<length;j++){
printf("%d %s %s %d %d\n",students[j].No,students[j].name,students[j].gender,students[j].age,students[j].grades);
}
printf("%d %s %s %d %d",students[j].No,students[j].name,students[j].gender,students[j].age,students[j].grades);
return 0;
}
测试数据:
2
1 aa male 13 1
2 bb female 14 0
但是调试的变量列表为: