怎么解决这个字符输入问题


#include"stdio.h"
#include"stdlib.h"
#define maxsize 100
#define max 32767
typedef struct 
{
    char top[maxsize];//顶点表 
    int arc[maxsize][maxsize];//邻接矩阵 
    int topnum,arcnum;//顶点数 ,边数 
 }Graph;
 int locate(Graph g,char n)
 {
     for(int i=0;i<g.topnum;i++)
     {
         if(g.top[i]==n)
         return i;
         else
         {
             printf("输入错误,程序结束\n"); 
             exit(0);
         }
     }
 }
 int creat(Graph &g)//创建带权值无向网 
 {
     char m,n;int i,j,k;
     printf("请输入邻接矩阵的顶点数和边数\n");
     scanf("%d%d",&g.topnum,&g.arcnum);
     printf("请输入顶点表的内容\n");
     getchar();
     for( i=0;i<g.topnum;i++)
     scanf("%c",&g.top[i]);
     for( i=0;i<g.topnum;i++)//邻接矩阵的初始化 
     for( j=0;j<g.topnum;j++)
     g.arc[i][j]=max; 
     printf("请输入每一条的连接的顶点及权值\n");
    for( i=0;i<g.arcnum;i++)
    {
        getchar();
        scanf("%c %c %d",&m,&n,&k);
        i=locate(g,m);j=locate(g,n);//查找顶点对应的数组下标
        g.arc[i][j]=g.arc[j][i]=k; 
     } 
 }
 int printf01(Graph g)//邻接矩阵无向网的输出
 {
     for(int i=0;i<g.topnum;i++)
     {
         printf("%c\t",g.top[i]);
         for(int j=0;j<g.topnum;j++)
         printf("%d\t",g.arc[i][j]);
         printf("\n");
     }
  } 
 int main()
 {
     Graph g;
     creat(g);
     printf01(g);
  }
//请今后要用
char c;
scanf("%c",&c);
//时,都改为
char s[2];
char c;
scanf("%1s",s);
c=s[0];
//自动跳过一个或多个空格或Tab字符或回车换行,读取下一个字符。