请看我这个简单的C语言。为啥第一遍输入字符串没有反应,回车后 第二遍输入才有反应,是编译系统的问题?

#include<stdio.h>
void main(){ char a[100],*p; int i=0; p=a;scanf("%s\n",a);for(;*p!='\0';){p++;i++;}printf("%d\n",i);}

输入格式问题。scanf("%s\n",a);表示你输完一个字符串之后还需要再输入一个回车。但是键盘输入以回车为字符串的结束符。第一个回车表示字符串输入完毕,还需要输入格式里的"\n"的回车。
因此只想输入一个回车的话,改成scanf("%s",a);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-29
scanf 存储 第一次回车, 循环显示条件需要第二次回车。