01/10/2018, 15:29

Hàm nhập mảng 2 chiều không getline được A[0]

Mình dùng hàm nhập mảng 2 chiều như bên dưới, nhưng không hiểu sao hàm cin.geline không lấy đc A[0] dù đã cấp phát động. Ai giải thích giúp mình với?

#include <iostream>
#include<string.h>
using namespace std;
void nhap_mang_2_chieu(char **A, int m, int n);

int main()
{
	int i, j, m, n;
	char **A, **B;
	cin >> m >> n;
	A = new char*[m];
	B = new char*[m];
	for (int i = 0; i < m; i++)
	{
		A[i] = new char[n];
		B[i] = new char[n + 10];
	}
	nhap_mang_2_chieu(A, m, n);
   }


void nhap_mang_2_chieu(char **A, int m, int n)
{
	for (int i = 0; i < m; i++)
	{
		cin.getline(A[i], n, '
');
	}
}
viết 17:39 ngày 01/10/2018

Em thêm cin.ignore(100, '\n'); trước khi nhập a[0] là đc

Do cin nó đọc số tới khi gặp khoảng trắng thì dừng, còn getline nó đọc xong \n thì dừng, mà \n đc tính là khoảng trắng, nên cin >> n xong vẫn còn \n, cin.getline tiếp theo sẽ đọc vào \n này thành ra đọc vào 1 dòng trống. Em phải xài cin.ignore để bỏ qua \n dư này

Bài liên quan
0