c++ - 如何制作一个终端应用程序来编码和解码具有 2 个参数、abc 和 coderkey abc 的字符串
问题描述
它给出一个错误(分段错误,核心转储),除非我用这样的字符串提供它:abcdefghijk。我必须从 A 开始,然后继续使用字母。长度无关紧要。我刚开始使用 c++,我什至不知道分段错误(核心转储)是什么意思。如果您有任何解决方案,请告诉我。:3
#include<iostream>
using namespace std;
void code(string word)
{
char abc[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char sabc[] = {'z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y'};
int ilist[word.size()];
char elist[word.size()];
for(int iw = 0; iw < word.size(); iw++)
{
for (int ic = 0; ic < 26; ic++)
{
if(word[iw] == abc[ic])
{
ilist[ic] = iw;
}else
{
continue;
}
}
}
for(int i = 0; i < word.size(); i++)
{
elist[i] = sabc[ilist[i]];
}
for(int f = 0; f < word.size(); f++)
{
cout << elist[f];
}
cout << endl;
}
void decode(string word)
{
string sabc = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
string abc = {'z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y'};
int ilist[word.size()];
char elist[word.size()];
for(int iw = 0; iw < word.size(); iw++)
{
for (int ic = 0; ic < 26; ic++)
{
if(word[iw] == abc[ic])
{
ilist[ic] = iw;
}else
{
continue;
}
}
}
for(int i = 0; i < word.size(); i++)
{
elist[i] = sabc[ilist[i]];
}
for(int f = 0; f < word.size(); f++)
{
cout << elist[f];
}
cout << endl;
}
int main()
{
int todo;
string todowith;
cout << "P||1 = CODE\nP||2 = DECODE\nP||WHAT TO DO?: ";
cin >> todo;
if(todo == 1)
{
cout << "P||WHAT TO CODE?: ";
cin >> todowith;
code(todowith);
}else if(todo == 2)
{
cout << "P||WHAT TO DECODE?: ";
cin >> todowith;
decode(todowith);
}else
{
cout << "P||THERE IS NO OPTION: " << todo << endl;
return 1;
}
return 0;
}
"""
解决方案
ilist[ic] = iw;
Ic 达到 25,但没有保证 ilist -length=word.size- 有 26 个元素。所以它超出了界限,这给出了你看到的异常。
顺便说一下,尝试使用 std::vector 而不是 VLA。
推荐阅读
- java - WebMvcConfigurer addCorsMappings 暴露的标头不起作用
- scikit-learn - y 参数在 knn sklearn 拟合函数中的含义
- python - 如何在python 3中单独查找和替换列表中的每个项目
- java - 为什么 Java Server Faces 中的 h:dataTable 不会在表行中呈现 h:inputText
- angular - Angular - 直接浏览路线
- csv - CSV 查找几乎相同的值并使它们相同并过滤值
- postgresql - 无法更改 docker postgres 容器中的 max_locks_per_transaction
- c - 为什么 Linux 内核不会在返回 IRQ_HANDLED 的共享 IRQ 的第一个处理程序处停止?
- c++ - 双链表实现中的内存分段错误
- python - Ploty Dash:如何在 Python 中将 Box Plot 框悬停小数位限制为两位?