2014-03-19 22 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; 
} 

希望这足以指向正确的方向。

相关问题