Я пишу оболочку и использую getline() со стандартным вводом с клавиатуры для приема команд. Однако у меня возникают проблемы с токенизацией входных данных. Я пытался использовать \n в качестве разделителя в функции strtok(), но, похоже, он не работает.
Например, я включил оператор if, чтобы проверить, набрал ли пользователь «выход», и в этом случае он завершит программу. Это не прекращается.
Вот код, который я использую:
void main() {
int ShInUse = 1;
char *UserCommand; // This holds the input
int combytes = 100;
UserCommand = (char *) malloc (combytes);
char *tok;
while (ShInUse == 1) {
printf("GASh: "); // print prompt
getline(&UserCommand, &combytes, stdin);
tok = strtok(UserCommand, "\n");
printf("%s\n", tok);
if(tok == "exit") {
ShInUse = 0;
printf("Exiting.\n");
exit(0);
}
}