Я считаю, что ваш объект здесь для сравнения аргумента командной строки (argv [2]) с символом (строкой) "C" или "c", т.е. вы просто, если пользователь дал c или C в командной строке.
Пользователи SO уже предложили объяснение.Вам нужно использовать
(strcmp (argv [2], "C") == 0 || (strcmp (argv [2], "c") == 0)
, чтобы исключить ваше предупреждение.
Однако это не оптимальный способ разбора аргументов командной строки в C. Если ваша программа слишком сложна при анализе пользовательского ввода, я бы предложил использоватьБиблиотека "Getopt". Она предназначена для того, чтобы помочь пользователю анализировать и анализировать структурированный ввод.
Вот небольшой фрагмент кода
opt = getopt_long( argc, argv, optString, longOpts, &longIndex );
while( opt != -1 ) {
switch( opt ) {
case 'I':
globalArgs.noIndex = 1; /* true */
break;
case 'l':
globalArgs.langCode = optarg;
break;
case 'o':
globalArgs.outFileName = optarg;
break;
case 'v':
globalArgs.verbosity++;
break;
case 'h': /* fall-through is intentional */
case '?':
display_usage();
break;
case 0: /* long option without a short arg */
if( strcmp( "randomize", longOpts[longIndex].name ) == 0 ) {
globalArgs.randomized = 1;
}
break;
default:
/* You won't actually get here. */
break;
}
opt = getopt_long( argc, argv, optString, longOpts, amp;longIndex );
}
Пожалуйста, найдите некоторые документы (илиman-страницы linux) для getopt и getopt_long. Вот пример из GNU .