2010-08-14 6 views
0

Tinyxml을 사용하여 반복적으로 XML 파일을 읽으려고하지만 데이터에 액세스하려고하면 "분할 오류"가 발생합니다. 여기에 코드입니다 : 어떤 이유Tinyxml을 사용하는 분할 오류

int id=0, categoria=0; 
const char* nombre; 
do{ 
    ingrediente = ingrediente->NextSiblingElement("Ingrediente"); 
    contador++; 
    if(ingrediente->Attribute("id")!=NULL) 
     id = atoi(ingrediente->Attribute("id")); 
    if(ingrediente->Attribute("categoria")!=NULL) 
     categoria = atoi (ingrediente->Attribute("categoria")); 
    if(ingrediente!=NULL) 
     nombre = ((ingrediente->FirstChild())->ToText())->Value(); 
}while(ingrediente);  

, 세 줄은 나에게 분할 오류를 발생하지만이 문제가 위치에 대한 생각을하지했습니다 "만일".

미리 감사드립니다.

+0

첫 번째 두 번째 요소는 아니지만 세 번째 요소는 성분이! = NULL인지 확인하는 것처럼 보입니다. 성분 true가 실제로 null 인 경우, 최초의 2 개 (살)이 세그먼트 (segment) 잘못을 슬로우했을 경우. 디버거를 열어서 정확히 무엇이 NULL인지 찾아야합니다. – Pace

+0

완전한 코드를 게시하고 "code"태그를 사용하는 것을 잊지 마세요. 그러면 올바르게 포맷됩니다. 나는 당신이 편집하는 것이 좋습니다. – Poni

+0

파싱 할 XML의 "미니 버전"을 올리면 더 좋아질 것입니다. – Poni

답변

1

각 반복의 시작 부분에 ingrediente을 업데이트 한 다음 null이 아닌지 확인하기 전에 역 참조하십시오. 널 (null)이면 세그먼트 화 오류가 발생합니다. 루프는 아마도 라인을 따라 구성되어야합니다.

일부 영어를 변수 이름에 혼합하면 죄송합니다. 나는 스페인어를 할 줄 몰라. NextSiblingElement는 당신에게 당신이 반복하는 시작하는 첫 번째 요소를 제공하는 경우

또는이는 forwhile로 대체 할 수 있습니다

while ((ingrediente = ingrediente->NextSiblingElement("Ingrediente"))) 

중요한 점은 포인터를 얻기 후에 널 (null)를 확인하고,이를 역 참조하기 전에 .