C 分段错误接受用户输入

C 分段错误接受用户输入,c,arrays,segmentation-fault,C,Arrays,Segmentation Fault,我正在运行一个简单的无限循环,需要接收用户输入并将其拆分为一个数组。当我试图显示阵列的元素时,我得到一个seg故障。 这是我的密码 while(1){ int tokenCount = 1; char* usrInputStr = NULL; char* buffer; scanf ("%[^\n]%*c", usrInputStr); int len = strlen(usrInputStr);

我正在运行一个简单的无限循环,需要接收用户输入并将其拆分为一个数组。当我试图显示阵列的元素时,我得到一个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;
}
while(1){
int-tokenCount=1;
char*usrInputStr=NULL;
字符*缓冲区;
scanf(“%[^\n]%*c”,usrInputStr);
int len=strlen(usrInputStr);

对于(int i=0;i,在使用以下命令初始化后,您尚未为
usrInputStr
分配内存:

char* usrInputStr = NULL;
然后,您继续在以下项目中使用它:

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

在使用以下各项初始化
usrInputStr
后,您尚未为其分配内存:

char* usrInputStr = NULL;
然后,您继续在以下项目中使用它:

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

在使用以下各项初始化
usrInputStr
后,您尚未为其分配内存:

char* usrInputStr = NULL;
然后,您继续在以下项目中使用它:

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

在使用以下各项初始化
usrInputStr
后,您尚未为其分配内存:

char* usrInputStr = NULL;
然后,您继续在以下项目中使用它:

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

您没有为char*usrInputStr分配任何内存位置,也没有扫描实际为空指针的内容。这导致了一些分段错误。您只是为其分配了一些动态内存。 例如:-

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


您没有为char*usrInputStr分配任何内存位置,也没有扫描实际为空指针的内容。这导致了一些分段错误。您只是为其分配了一些动态内存。 例如:-

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


您没有为char*usrInputStr分配任何内存位置,也没有扫描实际为空指针的内容。这导致了一些分段错误。您只是为其分配了一些动态内存。 例如:-

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


您没有为char*usrInputStr分配任何内存位置,也没有扫描实际为空指针的内容。这导致了一些分段错误。您只是为其分配了一些动态内存。 例如:-

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


所以我需要Malc吗?这是一个选项。其他选项是使用一个足够大的数组,或者使用<代码> STD::GETLION<代码>(C++库函数)。所以我需要Malc吗?这是一个选项。其他选项是使用足够大的数组,或者使用<代码> STD::GETLION<代码>(C++库函数)其他的选择是使用足够大的数组,或者使用<代码> STD::GETLION<代码>(C++库函数)。所以我需要Malc吗?这是一个选项。其他选项是使用足够大的数组,或者使用<代码> STD::GETLION<代码>(C++库函数)。