Вы не можете этого сделать.
argv[i]
- это адрес памяти, номер, это не строка и не может быть неявно по сравнению с другой «строкой» (либо литералом массива символов). С помощью инструкции switch
можно сравнить только интегральный тип. Вы можете использовать специальный символ внутри этого «строка»:
switch(argv[i][0]){
case '-': .....
default: ......
}
, но это, вероятно, не то, что вы хотите ...
Прямой вперед решение использовать группу if() ... else if() ...
утверждений:
if(!strcmp(argv[i], "-")) {
//...
} else if(!strcmp(argv[i], "some other value")) {
//...
} else {
// non of these...
}
Обеспечить более подробно – chux
дела хорошо, потому что это тип символа, который вы можете использовать в переключателе ... Я предполагаю, что ваш ARGV является ARGV обычно передается в main, который представляет собой массив строк или '** char' ... вы не можете сделать:' switch (char *) 'это просто способ структурирования языка ... если вы работаете над разбором argv для обычных переключателей, вы должны посмотреть 'man 3 getopt' –