请教为何红色部份不执行

Home Home
引用 | 编辑 csr
2011-06-28 20:47
楼主
推文 x0
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>                  
int main(void)
{
     char get;                  
     int i=0;
     printf("请输入密码:");
     
     for(i=0;i<5;i++)
     {
           if(i==5)           ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 ebolaman
2011-06-28 22:49
1楼
  
修正成这样就行了:

复制程式
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>


int main()
{
  char get[5];
  int i=0;

  printf("请输入密码:(最多4位)\n");

    for(i=0;i<=5;i++)
    {
      if(i==5)
      {
        printf("\n输入太多位数!!\n");
        
        system("pause");
        return 0;
      }

      get[i]=getch();

      if(get[i]==13 || get[i]==10) //If user inputs return key
        break;

        printf("*");
    }

    printf("\n你输入的密码为:");

    for(i=0;i<5;i++)
      printf("%c",get[i]);

      printf("\n");

  //Pause
  system("pause");
  return 0;
}






我看到的问题:

(1) 检查程序放在 "输入完" 后会比较洽当
(2) for 在 i 值为 5 时就跳出 for(i=0;i<5;i++){} 的回圈,因此不会执行到 if(i+1==5){printf("\n输入太多位数!!");return 0;}

也可以将 < 改成 <= 即可解决,但以回圈的意义上来看,这样不太好,有点多跑一点的感觉






献花 x1
引用 | 编辑 csr
2011-06-29 14:03
2楼
  
原来是这样

还是学艺不精
非常感谢大大清楚说明
小弟心领了谢谢
不过
当小弟打超过四位时
程式也还是没执行此行喔
printf("\n输入太多位数!!\n");

献花 x0
引用 | 编辑 ebolaman
2011-06-29 14:08
3楼
  
下面是引用 csr 于 2011-06-29 14:03 发表的 : 到引言文
原来是这样

还是学艺不精
非常感谢大大清楚说明
小弟心领了谢谢
不过
当小弟打超过四位时
程式也还是没执行此行喔
printf("\n输入太多位数!!\n");


呵呵被你发现了

因为我不是用 Dev C++ 编辑的,因此 就算 return 0 后还是会停留在 Console 介面,Dev C++ 就会直接关闭视窗

在  printf("\n输入太多位数!!\n");   底下补一行就行了: system("pause");

献花 x1
引用 | 编辑 csr
2011-06-29 20:44
4楼
  
下面是引用 ebolaman 于 2011-06-29 14:08 发表的 : 到引言文



呵呵被你发现了

因为我不是用 Dev C++ 编辑的,因此 就算 return 0 后还是会停留在 Console 介面,Dev C++ 就会直接关闭视窗

在  printf("\n输入太多位数!!\n");   底下补一行就行了: system("pause");

原来还有分编译器
小弟终于弄懂了
大大
真是太感谢您了
谢谢

献花 x0