概要: 私は最近、UNIX 端末で少し遊んでいて、"main" に引数を渡すと実際にどのように実行されるかをテストするために、小さな Objective-C アプリを作成することにしました。std=c99 を念頭に置いてアプリをビルドしました。
テスト: argv と argc に値をハードコーディングすると、すべて正常に動作するため、main の最初の数行から argv[0] と argv[1] を指定します。
問題: argv[0] と argv[1] をコメントアウトして unix 端末からアプリを実行すると、アプリは動作しません。そのため、端末が私が認識していない面白い文字を追加するかどうか疑問に思っています。 --
コードのスニペットを次に示します。 1. Dictionary は単なる構造体であることに注意してください。
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;
}