Почему PowerShell открывает новое окно при запуске exe

fgets добавляет \n к строке, которую вы извлекаете от пользователя, когда они нажимают Enter. Вы можете обойти это, используя strcspn или просто добавив \n в конец вашей строки, которую вы пытаетесь сравнить.

printf("Please enter put FILE_NAME (foo1, 2, or 3), ls, or exit: \n");
fgets(temp, 8, stdin);
temp[strcspn(temp, "\n")] = '\0';
if(strcmp(temp, "ls") == 0 || strcmp(temp, "exit") == 0)

Это просто заменяет \n на \0, но если вы хотите быть ленивым, вы можете просто сделать это:

printf("Please enter put FILE_NAME (foo1, 2, or 3), ls, or exit: \n");
fgets(temp, 8, stdin);
if(strcmp(temp, "ls\n") == 0 || strcmp(temp, "exit\n") == 0)

Но это не так элегантно.

0
задан Shayki Abramczyk 17 January 2019 в 13:07
поделиться

2 ответа

Вы запускаете внешний exe, так что он работает как задумано. Однако вы можете попробовать использовать cmd.exe / K - больше информации здесь https://ss64.com/nt/cmd.html

0
ответ дан Lars Hedberg 17 January 2019 в 13:07
поделиться

У меня была другая проблема с PowerShell, и решение этой проблемы решило и эту проблему.

В моей переменной среды PATHEXT у меня не было .exe, когда я добавил ее, проблема была решена, и все исполняемые инструменты работали без сбоев, вывод появляется в выводе PowerShell.

0
ответ дан Shayki Abramczyk 17 January 2019 в 13:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: