再次,我试图做一个简单的程序。它会读取RxC大小的某种板子。板上的每个项目都是字母,用空格分隔。这是一个示例板:C++字符/字符串读取问题
ABC
DEF
GHI
在此之后,它将读取的整数N,以及用于接下来的N行,读取字符串,并通过一个基于给定的处理它们一个板。但是现在,我正面临着如何阅读它们的问题。这里是代码:
#include<iostream>
using namespace std;
int r,c,el; char **arr;
int main()
{
char *tes;
int n;
//start reading the puzzle
cin >> r >> c; el=r;
cout << el << endl;
arr = new char * [3*(r+c)-6];
for(int i=0;i<r;i++)
{
arr[i] = new char[c+1];
for(int j=0;j<c;j++) cin >> arr[i][j];
arr[i][c] = '\0';
}
for(int i=0;i<el;i++) cout << arr[i] << endl;
cin >> n;
while(n>0)
{
n--;
cin >> tes;
cout << tes << endl;
}
}
我不知道这是什么问题,这似乎对我好。但是,它总是会出现运行时错误。我正在使用最新的MinGW和gdb调试器。在GDB我看到的东西像
“接收信号SIGSEGV。分割 故障”
和0000005错误。我真的不知道这里发生了什么。我已经尝试了两个iostream(cin & cout)和cstdio(scanf,puts等)。
P.S .:我在全局声明变量,因为我将在main()函数外处理它们。我将数组的“高度”的大小设置为(3 *(r + c)-6),而不是正常的(r),因为我将在以后使用相同的数组来存储其他字符串。
太多'<<' and '>>'和其他奇怪的是,这是c。标签已移除。 – pmg
嘿,既然你在学习C++,或许我们可能会对你感兴趣的是我们的一个时髦的自我管理容器类,比如'std :: vector',还有本季的'std :: string'类? –
对不起,pmg,我不应该从头开始放c标签。这是因为我使用C字符串 – Jim