我正在运行一个简单的无限循环,需要接受用户输入并将其拆分为数组。当我尝试显示数组的元素时,我得到一个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文件中工作正常。
答案 0 :(得分:3)
使用以下内容初始化后,您尚未为usrInputStr
分配内存:
char* usrInputStr = NULL;
然后继续使用它:
scanf ("%[^\n]%*c", usrInputStr);
答案 1 :(得分:0)
您尚未将任何内存位置分配给 char * usrInputStr 并向其扫描内容实际上是空指针。这导致了一些分段错误错误。你只需为它分配一些动态内存。 例如: -
char * usrInputStr =(char *)malloc(50 * sizeof(char));