C++ 传递字符串数组时的分段错误

C++ 传递字符串数组时的分段错误,c++,C++,我在stackoverflow上遇到了类似的问题,但它并没有解决我的问题 我正在尝试发送字符串数组,如下所示 void manipulateString( char *); int hashTable (int &, char * ); const int HTsize = 10; int main() { const int size = 100; char inputString[size]; cout << " Enter first name

我在stackoverflow上遇到了类似的问题,但它并没有解决我的问题

我正在尝试发送字符串数组,如下所示

void manipulateString( char *);
int hashTable (int &, char * );
const int HTsize = 10;
int main()
{
    const int size = 100;
    char inputString[size];

    cout << " Enter first names ( separate by a space ) \n ";
    cin.getline(inputString,size);

    manipulateString(inputString);

    return 0;
}

    void manipulateString (char *input)
{

    int firstNamelen;
    int hIndex=0,newIndex=0;
    int totalName = 0;

    char *firstname;
    firstname = strtok(input, " ");  // separate firstname

    while (firstname != NULL)
    {   

    firstNamelen = strlen(firstname);
    hIndex = hashfunction(firstname,firstNamelen);

    newIndex=hashTable(hIndex, firstname);
    cout << "\n\n ( " << firstname << " ) is stored at index [" << hIndex  << "] of hash table " << endl;

    firstname = strtok(NULL, " " ); // next first name

    }
}
void操纵字符串(char*);
int哈希表(int&,char*);
常数int HTsize=10;
int main()
{
常数int size=100;
字符输入字符串[大小];
cout假设
hashfunction
hashTable
不会导致分段错误

您只能读取
size-1
字符。
检查
cin.fail()
以查看
cin.getline
是否成功。如果未成功,字符串可能未
NULL
终止。如果字符串未
NULL
终止,
strlen
strok
可能导致分段错误。

什么是
manufacturestring()<代码> >什么?我不是C++专家,代码< >代码> GETLION>代码>考虑空终止符吗?我删除了“C”标签,这是C++。如果你可以使用C++,为什么不使用<代码> STD::String ?你显然想要字符串操作(1)<代码> char *输入< /COD>是一个字符串,而不是字符串数组。(2)您确定行长度小于100个字符吗?(3)为什么不使用
std::string
std::getline(std::istream&,std::string&)
?现在我们有另一个未知的函数:
哈希表