我正在创建一个块密码。
它的工作原理是这样的:你计算出需要多大的方形二维数组来保存文本,然后创建并填充从左到右/从上到下书写的文本块,然后从上到下打印出来底部/从左到右。
无论如何,通过注释掉区域进行一些测试,我确定程序遇到了从 for 循环开始的错误,它应该将字符串写入数组。
代码:
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <fstream>
#include <ctype.h>
#include <cstring>
#include <cmath>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
string buffer = "";
string buff2;
while (getline(cin, buff2))
{
buffer.append(buff2);
}
for (int i = buffer.length()-1 ; i >=0 ; i--)
{
if ( !isalnum ( buffer[i] ) )
{
buffer.erase( i,1 );
}
}
cout << buffer;
int static length = buffer.length();
int squareNum = static_cast <int> ( ceil(sqrt( static_cast <double> ( length ))));
char** block;
block = new char*[squareNum];
for(int i = 0; i < squareNum; i++)
block[i] = new char[squareNum];
int count = 0 ;
//encounters error here
for (int i = 0 ; i < squareNum ; i++)
{
for (int j = 0 ; j < squareNum ; j++)
{
block[j][i] = buffer[count++];
}
}
for (int i = 0 ; i < squareNum ; i++)
{
for (int j = 0 ; j < squareNum ; j++)
{
cout.put(block[i][j]);
}
}
for (int i = 0 ; i < squareNum ; ++i )
delete [] block[i] ;
delete [] block;
}
它可以编译一切,但是当我尝试通过命令提示符运行它时,我遇到了问题。我正在尝试读取 .txt 文件。我无法弄清楚为什么会遇到此错误。任何人都可以阐明这个问题吗?