[英]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.