再次,我試圖做一個簡單的程序。它會讀取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