Страницы

Поиск по вопросам

воскресенье, 16 февраля 2020 г.

C# Приложение с входными и выходными параметрами [дубликат]

#c_sharp


        
             
                
                    
                        
                            На этот вопрос уже даны ответы здесь:
                            
                        
                    
                
                        
                            Передать параметры программе и получить результат
                                
                                    (3 ответа)
                                
                        
                                Закрыт 3 года назад.
            
                    
Подскажите, пожалуйста: например

Запуск приложения ->
Указываем строковое значение ->
Работа приложения ->
Получаем строковое значение

Т.е. есть цель создания некоего модуля, который бы мог использоваться разным софтом
с указанием некоторых входных данных и получением в зависимости от этого результата.
К примеру указали приложению ссылку на сайт , получили результат, есть ли там указанный
текст - получили true/false.

Вопросы:


можно ли это сделать в консольном приложении?
если да то как принимать и как отправлять значения?
другой вариант?

    


Ответы

Ответ 1



В других ответах уже написали про параметры командной строки и код возврата. Но, как мне кажется, вам больше подойдут стандартные потоки ввода-вывода и их перенаправление. Например, напишем такую простейшую консольную программку: using System; class Program { static void Main() { // Читаем из стандартного потока ввода string line = Console.ReadLine(); // Обрабатываем введенное значение line = line.ToUpper(); // Пишем в стандартный поток вывода Console.WriteLine(line); } } Кстати, можно явно писать Console.In.ReadLine() и Console.Out.WriteLine(), указывая потоки ввода и вывода. Если её запустить, то нужно будет ввести строку в консоли. Результат тоже появится в консольном окне. Теперь можно использовать перенаправление потоков. Например, подадим на вход нашей программе текстовый файл, из которого она прочтёт значение (одну первую строку). Вывод перенаправим в другой текстовый файл. app < in.txt > out.txt Где app.exe - имя нашей программы. in.txt - входной файл. out.txt - выходной файл. Про конвейер и поток ошибок почитаете сами.

Ответ 2



Отвечаю на вопрос, как его понял я :) Вероятно, вы хотите, чтобы ваше консольное приложение запускалось с некими параметрами (ping localhost, где localhost - параметр) Создайте консольный проект, посмотрите на заголовок главного метода: static void Main(string[] args) Массив args - это и есть входные параметры. Если сделать так: namespace ConsoleApplication1 { class Program { static void Main(string[] args) { if (args[0] == "print") Console.WriteLine(args[1]); } } } А потом скомпилировать, и в командной строке набрать ConsoleApplication1 print hello - в консоль выведется hello Дальше сами :)

Ответ 3



В ответе выше вам дали код, даже два раза (повторять его не буду), как принимать параметры командной строки и обрабатывать их в консольном приложении. Суть сводится к тому, что вы вызываете свое приложение, и в строке вызова передаете их приложению через строковый массив args. После того, как вы получили нужные параметры, в вашем примере - имя сайта, ваше приложение выполняет необходимые действия и завершает работу. При завершении работы можно указать целочисленный (int) код возврата, он же ExitCode, который может быть обработан в вызывающем приложении. Т.е. true или false как вы хотите, возвратить не получится, а вот 0 или 1 (или еще какое число типа int) — запросто. Возвращать можно переопределив метод Main() в консольном приложении, заменив void на int, например так: static int Main(string[] args) { int i = 0; Console.WriteLine("Hello! I'll try to write command-line arguments."); foreach (var parameter in args) { Console.WriteLine("Parameter " + i.ToString() + " is: "+args[i]); } Console.WriteLine("Press ENTER to exit"); Console.ReadLine(); return args.Count(); } В данном коде программа может получать на вход какие-то аргументы командной строки, и пытается вывести их на экран консоли, после чего завершает работу с кодом возврата, равным числу аргументов. Кроме этого, получить тот же результат (завершение приложения с кодом возврата) можно при помощи метода Environment.Exit(code) (MSDN), которое позволит завершить работу не только по окончанию метода Main(), но и из другого места в программе. Можете попробовать вместо return args.Count(); написать так: Environment.Exit(args.Count()); (только верните назад void вместо int). Немного модифицированным и более гибким вариантом для решения вашей задачи будет использовать некий буфер (или буферы) для обмена данными, например, файлы: запускаем программу и в качестве аргумента командной строки передаете ей имя файла с какими-то входными данными, и имя файла, куда будет выведен результат. Программа обрабатывает входные данные, с их учётом выполняет какие-то действия, а результат записывает в нужном виде в выходной файл, который потом можно обработать как вам захочется. Для работы с файлами в арсенале C# есть разные инструменты, и рассказывать о всех возможностях как записать/прочитать файл слишком долго и много, но почитать об этом можно, например, тут, или тут, или здесь. Или погуглить и найти еще источники )

Комментариев нет:

Отправить комментарий