#include"stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
void num()
{ char A[7];
int i,flag=0;
R: system("cls");
printf("\t******欢迎进入登录系统******\n");
printf("\n");
printf("\n");
printf("***********用户名:hellow\n");
printf("***********密码:");
for(i=0;i<=5;i++)
{
A[i]=getch();
printf("*");
}
A[6]='\0';
getchar();
getchar();
if(strcmp(A,"123456")==0)
{
printf("\t\t密码正确正在登录系统....\n");
printf("\t\t请输入回车键继续\n");
getchar();
}
else
{
flag++;
printf("你还有%d次机会\n",3-flag);
printf("\t\t请输入回车键继续\n");
getchar();
if(flag<3)
{
goto R;
}
}
}
void main()
{
int a;
printf("*********欢迎**********\n");
printf("\n");
printf("\n");
printf("\t*******1登录*******\n");
printf("\n");
printf("\n");
printf("\n");
scanf("%d",&a);
switch (a)
{
case 1:
num();
break;
}
}
在这个程序中, A[6]='\0';应该是表示字符串结束的操作,我不清楚它内部是如何执行的,我删除这个语句后,在运行时第一次输入正确密码后按回车他就跳到else语句了(请各位回答getchar()的执行流程),第二次输入正确密码后要按两次回车才跳到else语句(我可以认为是受getchar()影响吗,请各位回答第一二次回车getchar()执行的流程)第三次和第二次输入情况一样的;
然后考虑A[6]='\0';我交换了getchar()和A[6]='\0';的先后顺序,发现输入密码时只有
getchar();
getchar();
A[6]='\0';
是要输入四次回车的:1换行;2执行if语句;3Press any key to continue;4跳出程序;
其他顺序是:1执行if语句;2Press any key to continue;3跳出程序;
请解释原因;
我不明白A[6]='\0';是说明A只接收6个字符吗?那A的最高限度是7个字符吧,还剩了怎么办(\0是否限定了A的范围,6个字符后默认不接受了)那么我可否用\0规定A的接收范围呢?例如在A里我让它接收的第二个和第五个里面的字符行吗?这个如何实现的;
还有A[6]='\0';没有了之后,strcmp()接收A时是不是123456后面一个默认为无意义的值呢,我想研究字符串时,我把for()和getchar()和strcmp()删除掉后,用scanf()和printf()测试时发现都是无意义的乱码,我把getchar()和strcmp()删除掉后,输出时出了两个乱码,我觉得这是我对字符串的长度不理解;
我听了郝斌的C语言,但读这个程序时出现上述问题,请问我应该看什么视频来提高了
第一:我测试时用的是scanf();嗯等我有时间我会处理的;
第二:初始状态是数组A[7];表示该数组有7个字符串元素;\0使A在输入第六个元素时终止,对不对,这个程序怎么是预防它存放的是字符串呢,有什么意义,目前我只懂得字符得用‘a’,字符串用“a”输入;不知道数字是否是字符;
第三:哪个人的视频呢?
我就没明白你第二个问题,getchar()这个函数就是从标准输入(说白了就是键盘)获得一个字符,你循环6次获得6个字符,把每一个字符依次存放在A这个数组。可是这个时候还仅仅是字符数组,根本不是字符串,所以要加一个字符串结束符A[6] = ‘\0’,这样数组A就是一个字符串数组了,这样你进行字符串的操作,比如后面的strcmp()函数。再去看看C语言字符串相关内容。。。你现在还处于问题都还不会问的阶段
第三:链接:http://pan.baidu.com/s/1dDGqESL 密码:j133
这个是我百度云盘上C语言视频,我没看过,不知道怎么样,你有兴趣可以下载下来看看,希望会有帮组
getchar()你说得不对吧,getchar();
getchar();
A[6]='\0';调换后,执行后没有出错,多了个回车;
getchar()这个函数,我在编程中用的不多!所以,没法给出比较理想的答案!
我在编程过程中,getchar(),我只在 实现“按任意键继续”这个功能时用到!
关于 C语言的函数,在网上有好多解释,多百度一下,应该会有你所需要的!