我正在用C构建汇编编译器,我只需要打印包含代码的行(字母数字字符)。
但是,我的编译器无法将fgets()
指向的字符串识别为空,因为它有时包含空格字符。
如何制作条件,仅打印包含字母数字字符的行?
我的代码如下所示:
while(fgets(Line,256,Inputfile)!=NULL)
{
i=0;
while(Line[i]!='\n')
{
Instruction[i]=Line[i];
i++;
}
printf("%s \n",Instruction);
}
谢谢,
答案 0 :(得分:0)
你必须修剪 fgets的结果。您可以参考this answer查看显示如何修剪C中字符数组的示例。
我希望这可以帮到你。
答案 1 :(得分:0)
我明白你的意思吗?你想忽略只有空格的行吗?
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);
}
}
答案 2 :(得分:0)
添加一个函数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;
}
然后调用该函数。