我正在尝试使用以下代码编写一个 minishell:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LINE_LEN 50
#define MAX_PARTS 50
int main ()
{
char* token;
char str[LINE_LEN];
char* arr[MAX_PARTS];
int i,j;
printf("Write a line: \n $:");
fgets(str, LINE_LEN, stdin);
while (str != "quit") {
i=0;
token = strtok(str, " \t\r\n");
while( token != NULL )
{
arr[i] = token;
printf("'%s'\n", arr[i]);
i++;
token = strtok(NULL," \t\r\n");
}
fflush(stdin);
printf("Write a line: \n $:");
fgets(str, LINE_LEN, stdin);
}
return 0;
}
它工作正常,但是当我输入“退出”时,程序并没有结束。我想它一定与 fgets 以及它在字符串 str 的末尾将 EOF 作为另一个字符合并的事实有关,所以当我将它与“quit”进行比较时,它不是同一个字符串。我不知道从标准输入读取的字符串中提取 \n 字符的正确方法是什么。¿ 有人可以帮帮我吗?
我想问的另一个问题是在这段代码中使用 fflush 是否是个好主意。谢谢