字段组成一个长string模拟输出即可,不需要结构体
string不要用scanf强行&str[0],无法接受size()会导致拼接时错误,要用cin输入

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string> 
#include<map>

using namespace std;

int main(){//例题10.7  清华大学  查找学生信息 
	int n,m;
	
	//用结构体会有深浅拷贝的问题,字段组成一个长string模拟输出即可 
	map<string,string> students;
        //map的key必须是string,不能是char*
	string query;
	
	while(scanf("%d",&n)!=EOF){
		for(int i=0;i<n;i++){
			string id;
			string name;
			string gender;
			string age;
			cin>>id>>name>>gender>>age;
			string info = id+" "+name+" "+gender+" "+age; 
			students[id] = info;
		}
		
		
		scanf("%d",&m);
		for(int i=0;i<m;i++){
			cin>>query;
			map<string,string>::iterator row = students.find(query);

			if(row==students.end()){
				cout<<"No Answer!"<<endl;
			} else {
				cout<<row->second<<endl;
			}
			
		}
		
	}
    return 0;
}