請教為何紅色部份不執行

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