Cấp phát động chuỗi char

Ai giúp em đoạn code này với ạ?
Tạo chuỗi char dạng con trỏ và làm: " Hãy copy từ s sang xâu t một đoạn bắt đầu tại vị trí m với độ dài n "

Code của em:

#include <iostream>
#include <cstring>
#define MX 50
using namespace std;

int main() {
	int m, n;
	char *ptr = new char[50];
	cout << "Nhap chuoi: ";
	gets_s(ptr,50);
	cout << "Nhap m: "; cin >> m; 
	cout << "Nhap n: "; cin >> n;
	char *t = new char[n];
	for (int i = m, j = 0; i < strlen(ptr), j < n; i++, j++) {
		t[j] = ptr[i];
	}
	cout << t;
	system("pause");
	return 0;
}

Em bị lỗi xuất ra chuỗi t ra kí tự rác ạ =(

Capture

Ai giúp em với !!!
Em cám ơn.

cuối chuỗi t thêm null vào nhé :v

1 Like

Ngoài phải thêm ‘\0’ vào t còn 1 lỗi nặng nha

char *ptr = new char[5];
gets_s(ptr,5);

Nhập thử 5 ký tự để test sẽ thấy ngay lỗi xảy ra.

Không nên dùng strlen nữa :smiley: vì chuỗi C kết thúc bằng 0, không cần abstraction mất thời gian.

Kiểu for(i=0; i<n; ++i) là dành cho mảng có số phần tử rõ ràng thôi, còn cấu trúc khác thì nếu chưa kết thúc thì :smiley:

1 Like

như bài em thì sửa strlen thành gì ạ :sob:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?