使用arg [v]作为int? - 目标C.

时间:2015-04-26 05:18:18

标签: objective-c xcode argv

我正在尝试使用Objective C在xcode程序的开头将参数传递给整数变量。到目前为止,我发现的大多数方法都给了我各种错误消息或者崩溃了我的VM。

int numcols, numrows;

int main(int argc, const char * argv[]) {
@autoreleasepool {

    if (argc != 3){
        NSLog(@"%2s", "Wrong number of arguments");
        exit(1);
    }

    //numrows = (int)(argv[1] - '0'); 
    //numcols = (int)(argv[2] - '0'); These lines cause a crash
    numrows = 3;
    numcols = 4;

我希望numrows取第一个参数而numcols取第二个参数。我进入xcode中的设置将起始参数更改为3和4,但是如果我检查它们或打印它们就会随机出现。

2 个答案:

答案 0 :(得分:2)

argv是一个 C字符串的数组。你不能只是将字符串转换为整数,你需要解析字符串以产生它所代表的整数值。

您可以自己编写代码来执行此操作,但幸运的是有一些库函数可以处理此问题,例如,请参阅strtol,它将解析字符串并生成long

HTH

答案 1 :(得分:1)

首先你的问题不清楚,我能说多少。因为argc表示参数计数,而argv表示参数值。如果要将char转换为int。试试这个

[[NSString stringWithFormat:@"%s", argv[2]] intValue];