Как использовать Visual Studio 2010 для ввода данных в консольное приложение Visual C ++ Win32? - PullRequest
0 голосов
/ 20 сентября 2010

Я использую Visual Studio 2010 Pro для простого программирования на C, я хотел бы знать, как я могу предоставить ввод для программы без необходимости делать это вручную. Среда, к которой я привык, - это ваша стандартная среда командной строки Unix. После того, как я скомпилировал файл C, вызвав "inputInts", он стал "a.out", и для проверки ввода я набрал бы:

Простой способ

echo 1 2 3 4| ./a.out //to provide input
The number of ints input was 4 //output

Более простой способ

more input.txt| ./a.out //to provide input
The number of ints input was 4 //output

Утомительный путь

./a.out
//now I would manually type
1 2 3 4 s //in this case I have to type a letter to move on
The number of ints input was 4 //output

Трудно, как я должен это сделать в Visual Studio 2010. Я хотел бы иметь возможность просто вводить в область ввода заранее или, по крайней мере, читать текстовый файл. Очевидно, что я не могу протестировать большие наборы данных, введя их вручную. В настоящее время я просто делаю кодирование в VS2010 и иду в среду Unix, чтобы выполнить большинство тестов. Я хотел бы остаться в среде VS2010 до тех пор, пока не буду готов провести финальное тестирование в Unix.

Я немного изменил вопрос с тех пор, как впервые опубликовал, поэтому оригинальные ответы могут показаться немного странными. Я снова ценю время и помощь каждого.

Это просто простой код для примера: #include

int main ()  {
    int x, n = 0;
    while (scanf("%d", &x)==1)
        n++;
    printf("The number of ints input was %d\n", n);
    return(0);
}

Ответы [ 4 ]

1 голос
/ 21 сентября 2010

Вам нужно создать «Консольное приложение» при запуске нового проекта Visual Studio. Это даст вам программу, которая запускается из окна командной строки Windows, иначе называемого окном Cmd после имени программы оболочки, которая запускается под ним. Окно командной строки находится под Programs -> Accessories в Windows XP, не уверен в других версиях Windows. Когда вы откроете командное окно, все будет работать так же, как вы привыкли в Linux.

cd MyProject
echo 1 2 3 4|.\MyProject.exe
MyProject.exe <input.txt
1 голос
/ 20 сентября 2010

Вы можете запустить вашу программу почти таким же образом в командной строке Windows, единственное очевидное отличие состоит в том, что вам нужно указать правильное имя исполняемого файла вместо a.out.

Чтобы сделать примерно то же самоеВнутри VS IDE вам, вероятно, потребуется сохранить пример ввода в текстовом файле, а затем указать что-то вроде < sample.txt в качестве аргументов для передачи программе в настройках отладки проекта.

1 голос
/ 20 сентября 2010

В оболочке cmd.exe есть оператор канала, который работает аналогично оператору канала Unix.В некоторых версиях Windows есть некоторые странности, но в целом вы должны иметь возможность делать с ним много того же.

0 голосов
/ 20 сентября 2010

В оболочке Windows (cmd.exe) вы можете использовать канал, похожий на linux, для таких команд, как

dir|more

За пределами оболочки вы говорите о среде графического интерфейса (как в графическом интерфейсе Linux)поэтому передача информации из одной программы в другую будет немного другой.

Однако вы можете добиться аналогичной функциональности, используя каналы (разделяемая память в Windows).Смотрите здесь для полного объяснения с примерами от людей из Microsoft Developer Network:
http://msdn.microsoft.com/en-us/library/aa365780%28v=VS.85%29.aspx

Или, если вам лень осматриваться, вот пример транзакций на именованных каналах: http://msdn.microsoft.com/en-us/library/aa365789%28v=VS.85%29.aspx

... или вы можете просто сбросить и прочитать из выходных файлов.

(Оба эти метода аналогичны тем, которые используются в программах Linux)

Было бы полезно получить дополнительную информацию о ваших конкретных потребностях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...