Здесь у меня есть программа, которая принимает аргументы (как удивительно ...).Я хочу, чтобы у него было несколько аргументов:
./myprogram -f filename.txt -x -o
, поэтому я хочу, чтобы основные аргументы были с "-", и эти аргументы должны принимать другой аргумент, например, имя файла.
У меня есть очень простая структура:
int main(int argc, char *argv[])
{
printf("Program name: %s\n", argv[0]);
while ((argc > 1) && (argv[1][0] == '-'))
{
switch (argv[1][1])
{
case 'f':
printf("%s\n",&argv[1][3]);
break;
case 'd':
printf("%s\n",&argv[1][2]);
printf("%s\n",&argv[1][2]);
break;
default:
printf("Wrong Argument: %s\n", argv[1]);
usage();
}
++argv;
--argc;
}
return 0;
}
Как вы можете видеть, в случае -d это печатает то, что следует за аргументом, без пробела;Вот пример вывода:
./myprogram -dfilename
Program name: myprogram
filename
filename
и с параметром -f
./myprogram -f filename
Program name: myprogram
ffilename
он печатает дважды первую букву, и я не понимаю, почему.Может ли кто-нибудь помочь?