2014-03-19 20 views
-4

如果控制語句寫入程序以輸出錯誤消息(如果IDE程序輸入參數包含字母字符),則使用該參數。C++的第二週,如果輸入參數包含字母字符,則需要返回錯誤

#include "stdafx.h" 
#include <iostream> 
#include <cstdlib> 
using namespace std; 

int main(int argc, char* argv[]) 
{ 
    cout<<argv[1]<<endl; 
    cout<<argv[2]<<endl;  

    return 0; 
} 
+2

你已經試過了什麼?請告訴我們你的代碼。我們不是在這裏爲你做功課,但如果你有一個具體的問題,你告訴我們你正在努力,我們可以幫助你。 – computerfreaker

+0

今天大多數電腦都使用[ASCII字母](http://www.asciitable.com/)。如果你看看那張桌子,我相信你可以弄清楚什麼。請記住字符文字和它們的ASCII值是可以互換的。所以例如字符文字「a」等於「97」。我建議在比較中使用字符文字以提高可讀性。 –

+0

編輯你的問題,不要把信息放在評論 – Federico

回答

1

很難判斷你卡在哪裏,但我會盡我所能提供幫助。如果我把時間浪費在你已經知道的事情上,我很抱歉。

比方說,你傳遞給你的程序(通過IDE或命令行):1156 q.p

argc然後是3(第一個參數是程序本身的名稱),並argv看起來是這樣的:

argv[0] = "program_name"; 
argv[1] = "1156"; 
argv[2] = "q.p"; 

需要注意的是:參數的數量並不固定,如果您嘗試讀取比您傳遞的參數更多的參數,您的程序將崩潰。 (從技術上講,它會導致不確定的行爲,這意味着任何事情都可能發生。)

C字符串的字符,並在最後一個特殊的NULL字符只是陣列,像這樣:

char program_name[] = {'p', 'r', 'o', 'g', 'r', 'a', 'm', 0}; 

字符可以像對待數字 - 實際上,它們是數字。這些線都做同樣的事情:

char a = 'a'; 
char a = 97; 

這也意味着你可以對它們進行比較:'a' == 97'a' < 'z'

ASCII字符分別被方便地映射爲:0-9,A-Z和a-z分別映射到48-57,65-90和97-122。這意味着,例如,如果字符介於'0'和'9'之間(包含),則該字符是數字。

要測試字符串中的每個字符,您需要遍歷它。本示例檢查字符串中的每個字符是否爲'X':

bool is_all_Xs(const char *str) { 
    for(int i = 0; str[i] != 0; ++i) { 
     if(str[i] != 'X') { 
      return false; 
     } 
    } 
    return true; 
} 

希望這足以指向正確的方向。

相關問題