C 阅读行时忽略空格或换行符

C 阅读行时忽略空格或换行符,c,newline,whitespace,scanf,C,Newline,Whitespace,Scanf,我一直在读一行,直到按下enter/return(就像一个终端),但是当我忽略空格和回车时,我遇到了一些问题 以下是我阅读和检查空格/新行/注释的方式: char line[256]; while(printf("%s>", shell_name) && scanf(" %50[^\n]", line) != EOF){ if(isspace(*line) == 0 && line[0] != '#' && line[0] !

我一直在读一行,直到按下enter/return(就像一个终端),但是当我忽略空格和回车时,我遇到了一些问题

以下是我阅读和检查空格/新行/注释的方式:

char line[256];
while(printf("%s>", shell_name) && scanf(" %50[^\n]", line) != EOF){
        if(isspace(*line) == 0 && line[0] != '#' && line[0] != '\n'){
输入示例:

mysh>echo lol
lol
mysh> *spaces*
mysh>
mysh> *next line(enter)*
mysh>
scanf(“%50[^\n]”行)中的
消耗所有前导空格(包括
“\n”
),而不仅仅是前导空格

isspace(*line)==0
行[0]!='\n'
总是正确的

建议
fgets()/sscanf()
。用户输入更容易处理,首先获取行,然后解析它

char buf[256];
if (fgets(buf, sizeof buf, stdin) == NULL) HandleEOF();
char line[256];
if (sscanf(buf, " %50[^\n]", line) < 1) Handle_WhiteSpaceOnlyLine();
GoodToGo();
charbuf[256];
if(fgets(buf,sizeof buf,stdin)=NULL)HandleEOF();
字符行[256];
if(sscanf(buf,“%50[^\n]”,line)<1)Handle_WhiteSpaceOnlyLine();
古多哥();

您应该添加此代码段不适用的示例输入。包括当前和预期结果。