だから、私はctfコンペティションのコードをいじっています。ただし、実際のコンソール アプリケーションを実行するたびに、クラッシュし続けます。誰かが理由を説明してくれませんか。よろしくお願いします。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int lowerConvert(char x)
{
int y;
if (x == 'a')
y = 1;
if (x == 'b')
y = 2;
if (x == 'c')
y = 3;
if (x == 'd')
y = 4;
if (x == 'e')
y = 5;
if (x == 'f')
y = 6;
if (x == 'g')
y = 7;
if (x == 'h')
y = 8;
if (x == 'i')
y = 9;
if (x == 'j')
y = 10;
if (x =='k')
y = 11;
if (x == 'l')
y = 12;
if (x == 'm')
y = 13;
if (x == 'n')
y = 14;
if (x == 'o')
y = 15;
if (x == 'p')
y = 16;
if (x == 'q')
y = 17;
if (x == 'r')
y = 18;
if (x == 's')
y = 19;
if (x == 't')
y = 20;
if (x == 'u')
y = 21;
if (x == 'v')
y = 22;
if (x == 'w')
y = 23;
if (x == 'x')
y = 24;
if (x == 'y')
y = 25;
if (x == 'z')
y = 26;
return y;
}
int upperConvert(char x)
{
int y;
if (x == 'A')
y = 27;
if (x == 'B')
y = 28;
if (x == 'C')
y = 29;
if (x == 'D')
y = 30;
if (x == 'E')
y = 31;
if (x == 'F')
y = 32;
if (x == 'G')
y = 33;
if (x == 'H')
y = 34;
if (x == 'I')
y = 35;
if (x == 'J')
y = 36;
if (x == 'K')
y = 37;
if (x == 'L')
y = 38;
if (x == 'M')
y = 39;
if (x == 'N')
y = 40;
if (x == 'O')
y = 41;
if (x == 'P')
y = 42;
if (x == 'Q')
y = 43;
if (x == 'R')
y = 44;
if (x == 'S')
y = 45;
if (x == 'T')
y = 46;
if (x == 'U')
y = 47;
if (x == 'V')
y = 48;
if (x == 'W')
y = 49;
if (x == 'X')
y = 50;
if (x == 'Y')
y = 51;
if (x == 'Z')
y = 52;
return y;
}
char lowerBack(int x)
{
char y;
if (x == 1)
y = 'a';
else if (x == 2)
y = 'b';
else if (x == 3)
y = 'c';
else if (x == 4)
y = 'd';
else if (x == 5)
y = 'e';
else if (x == 6)
y = 'f';
else if (x == 7)
y = 'g';
else if (x == 8)
y = 'h';
else if (x == 9)
y = 'i';
else if (x == 10)
y = 'j';
else if (x == 11)
y = 'k';
else if (x == 12)
y = 'l';
else if (x == 13)
y = 'm';
else if (x == 14)
y = 'n';
else if (x == 15)
y = 'o';
else if (x == 16)
y = 'p';
else if (x == 17)
y = 'q';
else if (x == 18)
y = 'r';
else if (x == 19)
y = 's';
else if (x == 20)
y = 't';
else if (x == 21)
y = 'u';
else if (x == 22)
y = 'v';
else if (x == 23)
y = 'w';
else if (x == 24)
y = 'x';
else if (x == 25)
y = 'y';
else if (x == 26)
y = 'z';
return y;
}
char upperBack(int x)
{
char y;
if (x == 27)
y = 'A';
if (x == 28)
y = 'B';
if (x == 29)
y = 'C';
if (x == 30)
y = 'D';
if (x == 31)
y = 'E';
if (x == 32)
y = 'F';
if (x == 33)
y = 'G';
if (x == 34)
y = 'H';
if (x == 35)
y = 'I';
if (x == 36)
y = 'J';
if (x == 37)
y = 'K';
if (x == 38)
y = 'L';
if (x == 39)
y = 'M';
if (x == 40)
y = 'N';
if (x == 41)
y = 'O';
if (x == 42)
y = 'P';
if (x == 43)
y = 'Q';
if (x == 44)
y = 'R';
if (x == 45)
y = 'S';
if (x == 46)
y = 'T';
if (x == 47)
y = 'U';
if (x == 48)
y = 'V';
if (x == 49)
y = 'W';
if (x == 50)
y = 'X';
if (x == 51)
y = 'Y';
if (x == 52)
y = 'Z';
return y;
}
void primaryRot13()
{
cout << "Please enter name of file to be decrypted: ";
string name;
getline(cin, name);
name += ".txt";
ifstream file;
ofstream write;
file.open(name);
string message;
file >> message;
int converted[9999999];
char reconvert[9999999];
for (int i = 0; i < message.length();++i)
{
if (message[i] == 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9)
message[i] += 53;
if (message[i] == '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')
converted[i] = lowerConvert(message[i]);
converted[i] += 13;
if (converted[i] > 26)
converted[i] -= 26;
if (message[i] == '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')
converted[i] = upperConvert(message[i]);
converted[i] += 13;
if (converted[i] > 52)
converted[i] -= 26;
}
for (int i = 0; i < message.length(); ++i)
{
if (converted[i] == 52 || 53 || 54 || 55 || 56 || 57 || 58 || 59 || 60 || 61){
reconvert[i] = converted[i] - 53;
continue;
}
if (converted[i] < 27){
reconvert[i] = lowerBack(converted[i]);
continue;
}
if (converted[i] < 51){
reconvert[i] = upperBack(converted[i]);
continue;
}
write.open("decode");
write << reconvert[i];
}
}
編集と最終的な解決策 数年後、再投稿するためにここにいます。私がやったのは、文字コードに必要な量を追加するだけで、そのセットの上限を超える場合は、26 を引いてリセットしました。また、代わりにベクターを使用することになりました。これにより、クラッシュの問題が解決されました。これで、私は一日中楽しく rot13 できます :) 無数の if ステートメントは必要ありません。