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)
Но это не так элегантно.
Вы запускаете внешний exe, так что он работает как задумано. Однако вы можете попробовать использовать cmd.exe / K - больше информации здесь https://ss64.com/nt/cmd.html
У меня была другая проблема с PowerShell, и решение этой проблемы решило и эту проблему.
В моей переменной среды PATHEXT
у меня не было .exe
, когда я добавил ее, проблема была решена, и все исполняемые инструменты работали без сбоев, вывод появляется в выводе PowerShell.