Birden çok komut satırı argümanını alan bir programım var, bu yüzden getopt kullanıyorum. Benim argümanlarımdan biri string olarak bir parametre alır. Yine de bu dizeyi getopt işleviyle elde etmek için var mı yoksa argv [] dizisiyle elde etmek zorunda mıyım? Ayrıca -file
gibi okuyucular okunabilir? Bugüne dek gördüğüm tüm argümanlar I) (getopt_long kullanmak için bir program yazdım, aşağıda yanıtlarından -a
Getopt- Bağımsız değişken için dize parametresi
DÜZENLEME
olarak tek karaktere sahip, ancak switch deyimi tek bir tez zaman tanır Uzun argümanı değil karakter argümanını kullanırım. Bunun neden böyle olduğundan emin değilim. -mf -file sample
argümanlarını geçerken, baskı ifadelerini göremiyorum.
DÜZENLEME
Ben --file
olarak komut argümanlar girerek çalıştı ve sonra işe yaradı. Bunu sadece -file
ile yapmak mümkün değil mi?
static struct option long_options[] =
{
{"mf", required_argument, NULL, 'a'},
{"md", required_argument, NULL, 'b'},
{"mn", required_argument, NULL, 'c'},
{"mw", required_argument, NULL, 'd'},
{"lf", required_argument, NULL, 'e'},
{"ld", required_argument, NULL, 'f'},
{"ln", required_argument, NULL, 'g'},
{"lw", required_argument, NULL, 'h'},
{"rf", required_argument, NULL, 'i'},
{"rd", required_argument, NULL, 'j'},
{"rn", required_argument, NULL, 'k'},
{"rw", required_argument, NULL, 'l'},
{"df", required_argument, NULL, 'm'},
{"dd", required_argument, NULL, 'n'},
{"dn", required_argument, NULL, 'o'},
{"dw", required_argument, NULL, 'p'},
{"file", required_argument, NULL, 'q'},
{NULL, 0, NULL, 0}
};
int ch=0;
while ((ch = getopt_long(argc, argv, "abcdefghijklmnopq:", long_options, NULL)) != -1)
{
// check to see if a single character or long option came through
switch (ch){
case 'a':
cout<<"title";
break;
case 'b':
break;
case 'c':
break;
case 'd':
break;
case 'e':
break;
case 'f':
break;
case 'g':
break;
case 'h':
break;
case 'i':
break;
case 'j':
break;
case 'k':
break;
case 'l':
break;
case 'm':
break;
case 'n':
break;
case 'o':
break;
case 'p':
break;
case 'q':
cout<<"file";
break;
case '?':
cout<<"wrong message"
break;
}
}
ama benim program argümanları kabul edilmez. Kodumu yukarıda ekledim. – AndroidDev93
@ AndroidDev93: Düzenlememi kontrol et – phoxis