c++ - 为什么我的代码在执行时的初始嵌套 for 循环中进入无限循环?
问题描述
我试图纠正的这段代码是针对 Hackerrank 上的 C++ 程序的属性解析器问题。代码还没有完成,因为我一次又一次地进入这个可怕的无限循环,因为我无法解决它。
编码:
struct tag{
char name[100];
char att[100][100];
char val[100][100];
};
int main(){
tag tags[100];
char line[200];
int n,q;
cin>>n>>q;
int a,b,c,flag;
a=0;
for(int i=0;i<n;i++){
cin.getline(line,200);
b=c=flag=0;
int j;
if(flag==0){
for(j=1;line[j]!=' '||line[j]!='>';j++)
{tags[a].name[j]=line[j];
cout<<"!";
}
flag=1;
}
else if(flag==1){
while(line[j]!='>'){
for(j+=1,c=0;line[j]!=' '||line[j]!='=';j++,c++){
tags[a].att[b][c]=line[j];
}
while(line[j]!='"')
j++;
for(j+=1,c=0;line[j]!='\"';j++,c++){
tags[a].val[b][c]=line[j];
}
b++;
}
a++;
}
}
cout<< tags[0].name[0];
return 0;
}
另外,我是编码和所有人的新手。建设性的批评将不胜感激:))
解决方案
在这种情况下:
line[j]!=' ' || line[j]!='>'
对于 的任何值line[j]
,析取的条件之一将为真。这会导致无限循环。
您正在寻找:
line[j]!=' ' && line[j]!='>'
推荐阅读
- c# - 在 IIS 上使用 Windows 身份验证的 Asp.Net Core MVC
- python - 谷歌云中使用的 blob 名称是什么?
- reactjs - AWS S3 - 我们计算的请求签名与签名不匹配
- xml - XPath - 查找相似但包含非字母数字字符
- javascript - 反应原生:当我试图导航到某个页面时出现什么错误?
- python - TypeError: conv2d(): argument 'input' (position 1) must be Tensor, not int
- html - 如何强制 svg 动画在蒙版中重新触发
- javascript - 如何在javascript中使用不带switch case的模式匹配(以函数式编程方式)
- android - 如何在颤振中创建自定义范围选择器?
- python - 将 Python 搁置从 dbm.gnu 转换为 dbm.dumb