C++ 对包含特殊字符C+的二维数组进行排序+;
我想对这个数组进行排序,但是如果我没有在数组中放入任何带有特殊字符的字符串,那么这个代码就可以工作。 如果我有 !\“#$%&'()*+,-./0123456789:@ 它无法工作。它在Visual Studio中崩溃 代码如下:C++ 对包含特殊字符C+的二维数组进行排序+;,c++,arrays,special-characters,C++,Arrays,Special Characters,我想对这个数组进行排序,但是如果我没有在数组中放入任何带有特殊字符的字符串,那么这个代码就可以工作。 如果我有 !\“#$%&'()*+,-./0123456789:@ 它无法工作。它在Visual Studio中崩溃 代码如下: #include <iostream> #include <cstring> using namespace std; int main (){ char data[10][40] = { "",
#include <iostream>
#include <cstring>
using namespace std;
int main (){
char data[10][40] = {
"",
"Welcome",
" !\"#$%&'()*+,-./0123456789:;<=>?@",
"aBCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`",
"abcdefghijklmnopqrstuvwxyZ{||||||||||}",
"CD_ROM",
"ROM",
"SCS",
"3.5 Floppi",
""
};
cout<<"Printing the array as is"<<endl<<endl;
for (int i=0; i<10; i++){
cout<<data[i]<<endl;
}
cout<<endl<<"Ordering the data in Alphabetical order"<<endl<<endl;
// bubble sort
for (int i=0 ; i<10-1 ; ++i) {
char Tcopy[17];
for (int j=i+1 ; j<10 ; ++j) {
if (strcmp(data[i], data[j]) > 0) {
strcpy(Tcopy, data[i]);
strcpy(data[i], data[j]);
strcpy(data[j], Tcopy);
}
}
}
cout<<"Printing the array Sorted"<<endl<<endl;
for (int i=0; i<10; i++){
cout<<data[i]<<endl;
}
// Pause
cout<<endl<<endl<<endl<<"Please Close Console Window"<<endl;
cin.ignore('\n', 1024);
return(0);
}
#包括
#包括
使用名称空间std;
int main(){
字符数据[10][40]={
"",
“欢迎”,
" !\"#$%&'()*+,-./0123456789:;?@",
“aBCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ `”,
“我不知道该怎么做”,
“光盘”,
“ROM”,
“SCS”,
"3.5 Floppi",,
""
};
库特
这就是你的问题。你的Tcopy
数组太短。你正在(可能)将40个字符复制到一个17个字符的数组中。你正在覆盖缓冲区的结尾,导致谁知道会造成什么样的损坏
尝试:
你说的“不行”是什么意思你得到了什么输出?你期望得到什么输出?你说它不工作是什么意思?你没有得到预期的结果吗?它会崩溃吗?擦除你的硬盘?烧掉你的面包?逗你的狗?借你的车并用空油箱还它?当你正在排序的数据是空的时,为什么你的临时字符串只有17char
长40?旁白:您有参数来cin.ignore
reversed.Hmm..当您运行它时,它具体做什么,您希望它做什么?
char data[10][40]
…
char Tcopy[17];
…
strcpy(Tcopy, data[i]);
char Tcopy[40];