Вот мои $ 0,02:
#include <stdio.h>
#include <string.h>
int
main (int argc, char *argv[])
{
if (argc != 2) {
printf ("USAGE: ./Person [-f|-l]\n");
return 1;
}
if (strcmp (argv[1], "-f") == 0) {
printf("First Name");
}
else if (strcmp (argv[1], "-l") == 0)
printf("Last Name");
}
else {
printf ("Unknown argument\n");
return 1;
}
return 0;
}
Важные моменты:
1) В C, вы не можете просто сравнивать строки (например, "ааа" == "БББ"). Вам нужны специальные библиотечные функции, такие как «strcmp()» («сравнить строки»).
2) Для использования функций библиотеки вам необходимо # включить заголовки (например, "stdio.h", для "printf()" или "string.h", для "strcmp()"). Вы можете узнать, какие заголовки вам нужны, используя «человек» ... или просто Google для соответствующего вызова («google strcmp» должен дать вам те же результаты, что и «man strcmp»)
3) Это хороший генерал чтобы использовать программы, возвращающие значения, чтобы указать «успех» или «отказ». «0», по соглашению, обычно означает «успех».
4) Наконец, для ваших целей важно использовать «argc» и «argv» для доступа к аргументам командной строки.
5) «if (argc! = 2)» вверху гарантирует, что вы ввели хотя бы один аргумент командной строки (аргумент «0» - это имя самой программы). Это важно, потому что попытка прочитать аргумент, который у вас отсутствует («попытка прочитать конец массива») может привести к сбою;)
«Надеюсь, что это поможет!
+1 для «бросить книгу» .... действительно нужно ... :) – havexz
Зачем использовать int перед main? –
Программа AC возвращает int в ОС, когда она заканчивается (поэтому последний оператор в основном является «return 0;» Обычно 0 означает, что он сработал, а любой другой номер содержит ошибку. См. Ответ Брендана ниже для примера –