繁体   English   中英

构建编译器 - 如何检查 char 数组是否为空(使用 fgets)

[英]Building compiler - How to check if char array is empty (using fgets)

我正在用 C 构建一个汇编编译器,我只需要打印包含代码(字母数字字符)的行。 但是,我的编译器无法将fgets()指向的字符串识别为空,因为它有时包含空白字符

如何设置条件,仅打印包含字母数字字符的行?

我的代码如下所示:

while(fgets(Line,256,Inputfile)!=NULL)
{   
    i=0;

    while(Line[i]!='\n')
    {               
        Instruction[i]=Line[i]; 
        i++;    
    }

        printf("%s \n",Instruction);
}

谢谢,

您必须修剪fgets 的结果。 您可以参考此答案以查看显示如何在 C 中修剪字符数组的示例。

我希望这可以帮助你。

我理解你对吗? 您想忽略只有空格的行吗?

while(fgets(Line,256,Inputfile)!=NULL)
{   
   i=0;
   int flag = 0;
   while(Line[i]!='\n')
   {               
      if(Line[i] != ' ' && Line[i] != '\t'){
         flag = 1;
      }
      Instruction[i]=Line[i]; 
      i++;    
   }
    if(flag == 1){
       printf("%s \n",Instruction);
    }
}

添加一个函数isLineToIgnore() ,您可以在其中检查该行是否包含任何字母数字字符。

int isLineToIgnore(char* line)
{
   for (char* cp = line; *cp != '\0'; ++cp )
   {
      if ( isalnum(*cp) )
      {
         // Don't ignore the line if it has at least one
         // alphanumeric character
         return 0;
      }
   }

   // The line has no alphanumeric characters.
   // Ignore it.
   return 1;
}

然后调用函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM