gets()不识别空格,即空格也作为字符串的一部分输入;
而scanf则识别空格、回车、TAB键作为结束;
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
struct student {
int num;
char name[20];
char sex;
int age;
};
int main(){
student s[20]={};
student* t;
t=s;
int n;
cin>>n;
for(int i=0;i<n;i++){
int _num;
char _name[20]={};
char _sex;
int _age;
cin>>_num;//gets(_name);
scanf("%s",_name);
cin>>_sex>>_age;
(t+i)->num=_num;
strcpy((t+i)->name,_name);
char *temp;
temp=&_sex;
char *temp1;
temp1=&((t+i)->sex);
strcpy(temp1,temp);
(t+i)->age=_age;
}
for(int j=0;j<n;j++){
cout<<(t+j)->num<<' '<<(t+j)->name<<' '<<(t+j)->sex<<' '<<(t+j)->age<<endl;
}
cin.get();
return 0;
}