2011年12月5日 星期一

C語言中的文字和數字轉換

在教小孩子們於C語言中進行一個數字小遊戲的製作時,
單純的用數字(int)來進行程式的編寫本身並沒有問題,
但在後面進行所謂的(例外錯誤)的檢測時,
發現C語言本身的型態轉換並不容易,
因此找了一下如何解決這個問題的方法,
最後還是發現使用(char)型態來運行整個程式的輸入及檢查

其中的重點就在於C語言中文字型態和數字型態的互相轉換

---------------------------------程式碼---------------------------------

int transfer(char n[],int temp[])
{
    //上方的char n[]為輸入的字元陣列
    //temp[]則是轉換成功後得到的數字陣列
     int i,j;
     i=0;
     while(n[i]!='\0') /*讀取整個陣列,因為字元陣列最後必為\0,此乃預設值。*/
     {
                    j=n[i];/*此處進行字元ASCII碼的轉換,以便之後的數字判斷*/
                             /*由int 型態的j來儲存字元char,得到ASCII碼*/
                    if(!(j>=49&&j<=57)) //在此處進行數字1-9的判斷
                    {
                        printf("請輸入1-9的數字\n");
                        return 0;
                    }
                    temp[i] = n[i]-'0';/*在此進行char轉int的動作*/
                                               /*其實就是把ASCII碼多的部份減掉*/
                    i++;
     }
     if(i!=4)
     {
          printf("請輸入4個數字,不要多也不要少!!\n");
          return 0;
     }
     else if(temp[0]==temp[1]||temp[0]==temp[2]||temp[0]==temp[3]||temp[1]==temp[2]||temp[1]==temp[3]||temp[2]==temp[3])
     {
          printf("請勿輸入重覆的數字\n");
          return 0;
     }
  
     return *temp;
}

---------------------------------END---------------------------------
這裡是程式碼中的一小段,主要是檢查輸入4個不同的數字所需的檢查及判斷過程