问一个C的小问题,关于getchar和循环的。。。
#include<stdio.h>voidmain(){inta=0,i;charc;for(i=10;i>=0;i--){printf("a=%d\n",a);c=ge...
#include <stdio.h>
void main()
{
int a=0,i;
char c;
for (i=10;i>=0;i--)
{
printf("a=%d\n",a);
c=getchar();
a++;
}
}
我的目的是输入一个字符,a就加1.但是,每次输入任意字符,就会执行两次循环。要是直接回车,就是一次循环。为什么? 展开
void main()
{
int a=0,i;
char c;
for (i=10;i>=0;i--)
{
printf("a=%d\n",a);
c=getchar();
a++;
}
}
我的目的是输入一个字符,a就加1.但是,每次输入任意字符,就会执行两次循环。要是直接回车,就是一次循环。为什么? 展开
3个回答
展开全部
使用getchar()函数读入字符时也将回车符读入
并且当输入多个字符时,getchar()函数先将所有函数保存在内存中,然后一个一个读取
这里你输入一个字符后回车,实际上是按两个字符来处理的
#include <stdio.h>
void main()
{
int a=0,i;
char c;
for (i=10;i>0;i--)
{
c=getchar();
a++;
printf("%d\n",a);
printf("%c\n",c);
}
}
你可以调试看看,循环第一次会是你输入的字符,第二次就是回车了
具体解决方案是将getchar改成getch,你可以到网上搜索这两个函数的不同
#include <stdio.h>
void main()
{
int a=0,i;
char c;
for (i=10;i>=0;i--)
{
printf("a=%d\n",a);
c=getch();
a++;
}
}
并且当输入多个字符时,getchar()函数先将所有函数保存在内存中,然后一个一个读取
这里你输入一个字符后回车,实际上是按两个字符来处理的
#include <stdio.h>
void main()
{
int a=0,i;
char c;
for (i=10;i>0;i--)
{
c=getchar();
a++;
printf("%d\n",a);
printf("%c\n",c);
}
}
你可以调试看看,循环第一次会是你输入的字符,第二次就是回车了
具体解决方案是将getchar改成getch,你可以到网上搜索这两个函数的不同
#include <stdio.h>
void main()
{
int a=0,i;
char c;
for (i=10;i>=0;i--)
{
printf("a=%d\n",a);
c=getch();
a++;
}
}
展开全部
试一下这个程序,输入结束时再按回车,可以输入任意多的字符。
#include <stdio.h>
void main()
{
int a=0,i;
char c;
while((c=getchar())!='\n')
a++;
printf("a=%d\n",a);
}
按你的那个程序,你是不是每输入一个字符就按一次回车!?那是不行的,因为回车也是一个字符的,当然要多加1了!
#include <stdio.h>
void main()
{
int a=0,i;
char c;
while((c=getchar())!='\n')
a++;
printf("a=%d\n",a);
}
按你的那个程序,你是不是每输入一个字符就按一次回车!?那是不行的,因为回车也是一个字符的,当然要多加1了!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
getchar把你按的enter键当换行符读入了,
可以在c=getchar();下面加一句printf("c=%d\n",c);来输出c的ASCII码,其中最后一次始终为10(换行的ASCII码)。
可以在c=getchar();下面加一句printf("c=%d\n",c);来输出c的ASCII码,其中最后一次始终为10(换行的ASCII码)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询