为什么要输入两次才运行出第一次输入的结果?

oujian111 2012-12-25 07:25:21
#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按回车,才运行出第一次输入的结果。为什么呢?
...全文
195 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
去掉scanf("%s\n",a);的\n就对了,字符串的结束符是\n,重复了
aay.zhang 2012-12-25
  • 打赏
  • 举报
回复
缓冲区问题,switch段后面加一句fflush(stdin);

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧