Потому что так определен язык.Предположим, что вы говорите, что это правда -
Все пользовательский ввод должен исходить из аргументов командной строки, но текст, перенаправленный из файла, может удовлетворить ввод, требуемый в различных функциях.Это может быть достигнуто , если входные данные отображаются в качестве аргументов командной строки.
Рассмотрим эту программу:
#include <stdio.h>
int is_dict(char *word)
{
/* code to look up a dictionary */
int result = 1;
return result;
}
int main(int argc, char *argv[])
{
if(argc == 2 && is_dict(argv[1]))
printf("%s found", argv[1]);
return 0;
}
Если программа написана таким образом, чтобы приспособить ее, товходные данные должны исходить из аргументов командной строки.Как бы вы взяли ввод, когда он не перенаправлен?Для обнаружения пропущенных входных данных потребуется больше программных издержек.
Кроме того, представьте текстовый файл, содержащий миллион слов: невозможно ожидать, что каждое слово будет иметь вид argv[n]
.
Есть и другие возражения.Предположим, что программа печатает серию запросов для ответов.Пользователь должен знать заранее, что это за подсказки, чтобы предоставить ответы до их появления.
Наконец, если программа запускается из графического интерфейса пользователя, то все входные данные программы должны быть отредактированы вего свойства перед запуском.