不知道为啥,邻接矩阵的深度优先遍历,C语言程序

不知道为什么,邻接矩阵的深度优先遍历,C语言程序。
在输入顶点的时候有问题,输#include<stdio.h>
typedef char VertexType;//邻接矩阵,深度优先遍历
typedef int EdgeType;
#define MAXVEX 100
#define INFINITY 65535
#define TURE 1
#define FALSE 0
typedef int Boolean;
Boolean visited[MAXVEX];

typedef struct 
{
VertexType vexs[MAXVEX];
EdgeType arc[MAXVEX][MAXVEX];
int numVertexes, numEdges;
}MGraph; //邻接矩阵

void CreateMGraph(MGraph G)
{
int i,j,k,w;
printf("输入顶点数和边数:\n");
scanf ("%d,%d",&G.numVertexes, &G.numEdges);
printf("输入顶点:\n");
for(i=0;i<G.numVertexes ;++i)//sth wrong with you!
{
scanf("%s",&G.vexs[i]);
}
getchar();
for(i=0;i<G.numVertexes ;i++)//初始化
{
for(j=0;j<G.numVertexes;j++)
{ G.arc[i][j]=INFINITY;}
}
for(k=0;k<G.numEdges;k++)
{
printf("输入边(Vi,Vj)的下标i,j,和权值w:\n");
scanf("%d,%d,%d",&i,&j,&w);
G.arc[i][j]=w;
G.arc[j][i]=G.arc[i][j];
}
}

void DFS(MGraph G,int i)
{
int j;
visited[i]=TURE;
printf("%c",G.vexs[i]);
for(j=0; j<G.numVertexes;j++)
if(G.arc[i][j]!=INFINITY&&!visited[j])
DFS(G, j);
}

void DFSTraverse(MGraph G)
{
int i;
for(i=0;i<G.numVertexes;i++)
visited[i]=FALSE;
for(i=0;i<G.numVertexes;i++)
if(!visited[i])
DFS(G, i);
}

void main()
{
MGraph G;
  CreateMGraph(G);
DFSTraverse(G);
}




完就停止了,高手们帮忙找找原因吧!!谢谢啊!

------解决方案--------------------
单步调试了么??
------解决方案--------------------
我知道一般输入一个char型的话会出现缓存的问题,每次都要用一次fflush(stdin),话说这个东西我也不是很熟,不知道是scanf前用还是后用,一般我是前后都有用的,呵呵,希望能帮到你!
------解决方案--------------------
你是怎么输入的,求输入格式,这里不要用getchar()(不用吸收回车),这里我感觉是要输入逗号的原因,你把scanf里的逗号去掉试试。。