小编今天写了一个小程序关于getchar()。。
题目:
编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
题目什么意思呢?
意思就是让从键盘获取一段源代码判断代码中的大括号是否成对且相互匹配。
那么先说说getchar() 自己总结的一下。
getchar()最主要功能是从键盘上获取一个字符,但用法却很灵活也很有特点。
比如一般要获取多个字符的时候与while 结合,就会从键盘上一个一个获取。
通常是把输入的字符赋值给一个变量,也可以通过数组将获取的字符存入数组,就拿上面题目来说,代码如下:
#include<stdio.h>
int main()
{
char c,s[100];
int i = 0,n,ch,cha;
int j = 0,z = 0;
printf("请输入字符个数小于100\n");
while((c=getchar())!='\n')//获取字符并计数‘{’ 和 ‘}’的个数
{
s[z] = c;
if(c == '}')
{
i+=1;
}
if(c == '{')
{
j+=1;
}
z++;
}
s[z] = '\0';
for(n=0; n<sizeof(s)/sizeof(s[0]); n++)//判断第一个大括号是‘}’还是‘{’。
{
if(s[n]=='}')
{
ch = -1;
break;
}
if(s[n]=='{')
{
ch = 1;
break;
}
}
for(n=sizeof(s)/sizeof(s[0]); n>0; n--)//判断最后一个大括号是‘{’还是‘}’。
{
if(s[n]=='{')
{
cha = -1;
break;
}
if(s[n]=='}')
{
cha = 1;
break;
}
}
if((ch==-1)||(cha==-1))//如果第一个大括号是‘}’或者最后一个大括号是‘{’,匹配错误。
{
printf("匹配失败\n");
}
else
{
if(i == j)//判断‘{’和‘}’的个数是否相等并且大括号为{}。
{
//if((ch==1)&&(cha==1))
printf("匹配成功\n");
}
else
{
printf("匹配失败\n");
}
}
printf(" ‘{’ 有%d个, ‘}’ 有%d个\n",j,i);
return 0;
}
对于s[z] = '\0'这个相信有人疑问,我是这样理解的,每个数组在内存中最后一个结束符为\0。所以这是对数组的长度的限制。
希望有帮助,或者请多多指教