我正在尝试使用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,但是如果我检查它们或打印它们就会随机出现。
答案 0 :(得分:2)
argv
是一个 C字符串的数组。你不能只是将字符串转换为整数,你需要解析字符串以产生它所代表的整数值。
您可以自己编写代码来执行此操作,但幸运的是有一些库函数可以处理此问题,例如,请参阅strtol
,它将解析字符串并生成long
。
HTH
答案 1 :(得分:1)
首先你的问题不清楚,我能说多少。因为argc表示参数计数,而argv表示参数值。如果要将char转换为int。试试这个
[[NSString stringWithFormat:@"%s", argv[2]] intValue];