分段故障采取用户输入

时间:2015-10-09 16:45:29

标签: c arrays segmentation-fault

我正在运行一个简单的无限循环,需要接受用户输入并将其拆分为数组。当我尝试显示数组的元素时,我得到一个seg错误。 这是我的代码。

while(1){
        int tokenCount = 1;
        char* usrInputStr = NULL;
        char* buffer;

        scanf ("%[^\n]%*c", usrInputStr);

        int len = strlen(usrInputStr);

           for (int i = 0; i <len ; ++i) {
               if(isspace(usrInputStr[i])) tokenCount++;
           }

        char* currentTokens[tokenCount+1];
        int index = 0;
        buffer = strtok(usrInputStr, " ");
        while(buffer != NULL){
            currentTokens[index] = buffer;
            index++;
            buffer = strtok(NULL, " ");
        }
        for (int i = 0; i < index+1; ++i)
        {
            currentTokens[i];
        }


    }//end of backbone while

    return 0;
}

任何想法我出错了,使用g ++编译时,相同的代码在.cpp文件中工作正常。

2 个答案:

答案 0 :(得分:3)

使用以下内容初始化后,您尚未为usrInputStr分配内存:

char* usrInputStr = NULL;

然后继续使用它:

scanf ("%[^\n]%*c", usrInputStr);

答案 1 :(得分:0)

您尚未将任何内存位置分配给 char * usrInputStr 并向其扫描内容实际上是空指针。这导致了一些分段错误错误。你只需为它分配一些动态内存。 例如: -

  

char * usrInputStr =(char *)malloc(50 * sizeof(char));