У меня есть задание написать программу, которую можно использовать в оболочке bash, которая имитирует определенные команды Unix по умолчанию, и мы должны создавать их с нуля.Одной из этих команд является команда PS1, которая должна изменить подсказку $ на любой аргумент, заданный командой.Я реализовал это в коде ниже, и он работает почти идеально.
До использования команды PS1 приглашение работает правильно, оно печатает $ и не делает отступ, скорее, оно позволяет пользователю продолжать печатать в той же строке.Однако после использования команды каждый раз, когда предполагается появление приглашения, программа распечатывает приглашение и затем переходит на новую строку.Мне нужно, чтобы печатать PS1 char * без перехода на новую строку.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, char *argv[]) {
int exit = 0;
char* PS1 = "$";
while(exit == 0){
char* token;
char* string;
char input[500];
printf("%s", PS1);
fgets (input, 500, stdin);
token = strtok(input, " ");
if(strncmp(token, "exit", 4) == 0){
exit = 1;
break;
}
else if(strncmp(token, "echo", 4) == 0){
token = strtok (NULL, " ");
while (token != NULL){
printf ("%s", token);
printf("%s", " ");
token = strtok (NULL, " ");
}
}
else if(strcmp(token, "PS1") == 0){
token = strtok (NULL, " ");
char temp[300];
strcpy(temp, &input[4]);
PS1 = temp; }
}
}