gpt4 book ai didi

c++ - 对字符串数组进行排序会导致段错误

转载 作者:行者123 更新时间:2023-11-28 03:02:06 24 4
gpt4 key购买 nike

我正在尝试编写一种排序以按升序对字符串数组进行排序我的函数如下:

void mySort(string list[], int size) { 
for (int i=0; i<size; i++){
for (int j=0; j < size-i; j++){
if (strcmp(list[j].c_str(),list[j+1].c_str())< 0);{
std::swap(list[j], list[j + 1]);
}
}
}
}

然后是使用排序的函数:

void q0run(question q){

std::string input = q.programInput; //Place the data file in a variable
//cout << input << endl; //Test to make sure data file stored correctly - works
std::ifstream inputFile (input.c_str()); //Open File
if(inputFile.good()){ //Make sure file is open before trying to work with it
//Begin Working with information
cout << "In File: \t" << input << endl;
int number_of_lines = 0;
std::string line;
while (std::getline(inputFile, line)){
++number_of_lines;
}
std::cout << "Number of lines in text file: " << number_of_lines << endl;
std::string dataStorage[number_of_lines];
inputFile.clear();
inputFile.seekg(0);
for(int loop=0;loop<number_of_lines;loop++){
getline(inputFile,dataStorage[loop]);
}
mySort(dataStorage,number_of_lines);
for(int loop=0;loop<number_of_lines;loop++){
cout << dataStorage[loop] << endl;
}
inputFile.close();
}else{
cout << "Could not open file!!!" << endl;
}

}

当我运行程序时,虽然它在排序时出现了段错误。不确定我做错了什么:

      In File:        data01a.txt
Number of lines in text file: 253
Segmentation fault (core dumped)

正在填充要排序的数组,我可以在其上运行一个循环并将其全部打印出来,没有任何想法?更简单的排序方法也可以!谢谢!

最佳答案

if (strcmp(list[j].c_str(),list[j+1].c_str())< 0);{

糟糕!

  • 有一个额外的;所以交换总是会发生;
  • 你的内部循环需要少一次迭代,否则 j+1 会跳出结尾;
  • 所有这些 C 字符串转换真的有必要吗?
    std::string::compare 会完成这项工作...

关于c++ - 对字符串数组进行排序会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20523800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com