C++ 为什么会出现分割错误

C++ 为什么会出现分割错误,c++,C++,我有一个代码,我搜索一个文件,将每一行分配给一个数组,然后根据每个组需要多少人随机输出组。 例如:如果用户每个组输入2人,并且列表中有50人,那么将有25组2人 在这条线路的某个地方有一个分段错误,但我不知道它在哪里,也不知道它是什么 使用名称空间std; int peoplePerGroup; 整数计数=0; int-groupNum; 空群(); 字符串名[50]; int main(){ cout>peoplePerGroup; 弦线; ifstream myfile(“names.txt

我有一个代码,我搜索一个文件,将每一行分配给一个数组,然后根据每个组需要多少人随机输出组。 例如:如果用户每个组输入2人,并且列表中有50人,那么将有25组2人

在这条线路的某个地方有一个分段错误,但我不知道它在哪里,也不知道它是什么

使用名称空间std;
int peoplePerGroup;
整数计数=0;
int-groupNum;
空群();
字符串名[50];
int main(){
cout>peoplePerGroup;
弦线;
ifstream myfile(“names.txt”,ios::in);
如果(myfile.is_open()){
int i=0;
while(getline(myfile,line)){
如果(i<50){
名称[i]=行;
i++;
}否则
继续;
}
myfile.close();
}
组();
返回0;
}
无效组(){
int i,j=0;
而(j<50){
srand(时间(空));
int随机[50];
int k;
随机[k]=rand()%50;
groupNum=1;
if(每组人数cout正如评论中已经指出的。
i
k
没有初始化。因此不能保证它们将是0,这是您在代码中期望的。它们可以是int可以是的任何东西

如果你想,你可以添加一个

std::cout << k << " " << i << std::endl;

对我来说,它崩溃了。将来如果你有类似的问题,你可能想使用调试器,然后启动你的程序,如果它崩溃了,你将确切地看到它崩溃的地方,并看到当前范围内所有可用变量的值。

int k;
使
k
未初始化,这是时的问题ode>随机[k]
发生在下一行。同样
int i,j=0;
只初始化
j
,而不初始化
i
,这可能会导致更多问题。这些可能是您遇到的唯一问题,也可能不是唯一的问题,但无论如何都需要修复。调试崩溃的第一步是找出崩溃发生在哪一行。您可以使用您的r调试器,或者您可以开始放入临时调试打印(例如,
cout请注意
srand(time(NULL));
应移到
main
函数的开头。无需多次执行它。请参阅例如。
random[k] = rand() % 50