2016-09-16 108 views
-1

代码: -解析为const char * argv的[]

#import <Foundation/Foundation.h> 

    int main(int argc, const char* argv[]){ 
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
     char* charString = argv[1]; 

    printf("%s", charString); 


     [pool drain]; 
     return 0; 
    } 

问题: -

但上面的线是印刷空,如何获得整数的阵列;

+0

这里有两个问题1.代码问题2.算法问题。你应该分开解决这两个问题。现在的问题太广泛了(“为我写这篇作业”)。 – Sulthan

+0

您的“输入”和“输出”示例没有意义。 – Sulthan

+0

更新的问题 – Vizllx

回答

0

argv[0]是您的程序的名称。如果你想读取你的参数,首先阅读argv[1]。当然,您还应该检查是否有一些使用argc > 1的参数。

或者你可以使用[[NSProcessInfo processInfo] arguments]

int main(int argc, const char* argv[]){ 
    @autoreleasepool { 
     for (NSInteger i = 0; i < argc; i++) { 
      NSString *stringArgument = [NSString stringWithFormat:@"%s", argv[i]]; 
      NSLog(@"%@", stringArgument); 
      NSLog(@"Integer value: %i", [stringArgument intValue]); 
     } 
    } 

    return 0; 
} 

int main(int argc, const char* argv[]){ 
    @autoreleasepool { 
     for (NSString *argument in [NSProcessInfo processInfo].arguments) { 
      NSLog(@"%@", argument); 
      NSLog(@"Integer value: %i", [argument intValue]); 
     } 
    } 

    return 0; 
} 

参数:10 20

输出:

ObjcTest [65709:1964435] /项目/ ObjcTest /建立/ P RODUCTS /调试/ ObjcTest
ObjcTest [65709:1964435]的整数值:0
ObjcTest [65709:1964435] 10
ObjcTest [65709:1964435]的整数值:10
ObjcTest [65709:1964435] 20
ObjcTest [65709:1964435]整数值:20

请注意,第一个参数不能转换为整数,因此打印值为0

+0

不工作! ............ – Vizllx

+0

@Vizllx它工作正常。 – Sulthan