为何要输入两次才运行出第一次输入的结果

为什么要输入两次才运行出第一次输入的结果?
为何要输入两次才运行出第一次输入的结果为何要输入两次才运行出第一次输入的结果#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#define N 8
int main(int argc, char* argv[])
{
char a[N]={'\0','\0','\0','\0','\0','\0','\0','\0'};
char *p;
void wenzi(char *p);
printf("输入汉字的拼音:");
scanf("%s\n",a);
p=a;
wenzi(p);
return 0;
}
void wenzi(char *p)
{
int b;
if(strcmp(p,"wo")==0) b=1;
else if(strcmp(p,"ai")==0) b=2;
else b=0;
switch(b)
{
case 1:printf("我"); break;
case 2:printf("爱"); break;
case 0:printf("没有此字!");
}
}
运行时,我输入wo按回车没有得出结果,光标移到了下一行,然后我继续输入ai按回车,才运行出第一次输入的结果。为什么呢?
------解决方案--------------------
缓冲区问题,switch段后面加一句fflush(stdin);
------解决方案--------------------
去掉scanf("%s\n",a);的\n就对了,字符串的结束符是\n,重复了