总结:我最近一直在玩 unix 终端,并决定构建一个小型 Objective-C 应用程序,以测试将参数传递给“main”的实际执行方式。我已经构建了应用程序,牢记 std=c99。
测试:如果我将值硬编码为 argv 和 argc,一切正常,因此: argv[0] 和 argv[1] 来自 main 的前几行。
问题:如果我将 argv[0] 和 argv[1] 注释掉并从 unix 终端运行我的应用程序,该应用程序将永远无法运行,这就是为什么我想知道终端是否会附加任何我不知道的有趣字符--
这是代码片段: 1. 请注意 Dictionary 只是一个结构 2. 想法?
int main(int argc, char * argv[])
{
//argv[0] = "prog";
//argv[1] = "four";
NSLog(@"request from: %s, entered string: %s, # of arguments: %i", argv[0], argv[1], argc);
//argc = 2;
if (argc >= 2)
{
if (translate(argv, argc));
else
NSLog(@"%s", "Unable to find request in dictionary");
}
else
NSLog(@"insufficient arguments");
return 0;
}
BOOL translate(char * search[], int size)
{
const int buffer = 6;
Dictionary dic[] =
{{"one", "1"},
{"two", "2"},
{"three", "3"},
{"four ", "4"},
{"five", "5"},
{"six", "6"}
};
char * temp = search[size - 1];
NSLog(@"temp value: %s", temp);
int i = 0;
for (; i < buffer; ++i)
{
char * temp2 = dic[i].num;
NSLog(@"steped into for loop - with currect struct value: %s", temp2);
if (temp == temp2)
{
NSLog(@"steped into if stamtement");
NSLog(@"%s", dic[i].translate);
return YES;
}
}
return NO;
}