Есть несколько проблем с этим кодом.Прежде всего вы должны включить предупреждения вашего компилятора (и всегда проверять их!).Если вы это сделаете, вы увидите что-то вроде этого:
предупреждение: неявное объявление функции strcmp
, что является очень важным предупреждением: это означает, что вы забылиправильный #include
и что компилятор просто угадает, в этом случае ошибочно.
Если вы посмотрите вашу любимую документацию C, вы увидите, что strcmp
требует #include <string.h>
.Если вы добавите это, вы получите полезное сообщение, на этот раз серьезная ошибка:
ошибка: слишком мало аргументов для работы strcmp
И парадополнительных полезных предупреждений:
предупреждение: левый операнд выражения с запятой не имеет эффекта предупреждения: передача аргумента 1 в 'strcmp' делает указатель из целого числа без приведения
Имея это в виду, внимательно изучите вызов вашей функции:
if(strcmp((argv[i],"-c") == 0))
Существует только аргумент для strcmp()
, который является результатом этого сравнения (argv[i],"-c") == 0
, где вы сравниваете строку"-c"
(левая часть оператора запятой игнорируется) с 0
, который является NULL
указателем.Вы, вероятно, хотите написать:
if (strcmp(argv[i], "-c") == 0)