C++ 传递字符串数组时的分段错误
我在stackoverflow上遇到了类似的问题,但它并没有解决我的问题 我正在尝试发送字符串数组,如下所示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
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&)
?现在我们有另一个未知的函数:哈希表