Segfault在循环中使用If语句时

时间:2014-03-13 07:55:52

标签: c

我正在尝试解析一个文件,并使用结构存储结果,但我不断得到一个segmetaion错误,我似乎无法找出原因。

 while (token ! = NULL)
    {
        token =strtok(NULL, " ");

        if (token[0] == 'd')
        {  
           if (token[1] == 'e')
            {
               room -> eastD = atoi(&token[2]);

               printf("%d",room->eastD);
            }
         }
    }

2 个答案:

答案 0 :(得分:2)

检查以下令牌是否为NULL。

 token =strtok(NULL, " ");

你也应该对它进行NULL检查。

if(token != NULL)
{
}

答案 1 :(得分:0)

基本上,这是因为令牌是NULL然后你尝试取消引用它。你做错了。

token = strtok( input_str, " " );
while( token != NULL )
{
    if ( strlen( token ) > 2 )
    {
        if ( token[0] == 'd' )
        {  
            if ( token[1] == 'e' )
            {
                room->eastD = atoi( &token[2] );
                printf( "%d", room->eastD );
            }
        }
    }
    token = strtok( NULL, " " );
}