在学姐的帮助下总算的写出来了,感谢今夕学姐的教导
#include<iostream>
#include<cstring>
using namespace std;
int n,m,sum;
char mapp[21][21]={1};
int visit[21][21];
int dir[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
void dfs(int x,int y)
{
//int xx=x,yy=y;
visit[x][y]=1;
for(int i=0;i<4;i++)
{
int xx,yy;
xx=x+dir[i][0];
yy=y+dir[i][1];
if(xx<0||xx>=n||yy<0||yy>=m||(visit[xx][yy]==1)||mapp[xx][yy]=='#') continue;
sum++;
dfs(xx,yy);
}
}
int main()
{
while(cin>>m>>n&&n&&m)
{
//memset(visit,0,sizeof(visit));
fill(&visit[0][0],&visit[21][0],0);
sum=0;
int x,y;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>mapp[i][j];
if(mapp[i][j]=='@') x=i,y=j;
}
}
//cout<<visit[0][0];
dfs(x,y);
cout<<sum+1<<endl;
}
return 0;
}