Chuỗi trong C++

int KiemTraTenDangNhap(char tenDangNhap[])
{
	char s[31];
	strcpy(tenDangNhap, s);
	_strlwr(s);
	char *p = strstr(s, "admin");
	if (p == NULL)
		return 0;
	return 1;
} //Mọi người kiểm tra giùm mình hàm sau đây có chỗ nào sai không?

Khi mình chạy thử chương trình thì đến cuối hàm báo lỗi : Unhandled exception at 0x00007FF76CCF533C in Bai01.exe: Stack cookie instrumentation code detected a stack-based buffer overrun. occurred
Mình tra trên mạng thì biết đây là do tràn bộ nhớ đệm nhưng vẫn chưa tìm ra cách khắc phục được, mong mọi người giúp ạ!

Mình khuyến nghị nghị bạn dùng char *s thay char s[31] để hạn chế những lỗi này.

1 Like
do
	{
		cin.ignore();
		cout << "Nhap ten dang nhap: ";
		cin.get(tk.tenDangNhap, 30, '\n');
	} while (KiemTraTenDangNhap(tk.tenDangNhap)==0);

Mình có gọi hàm đó để kiểm tra điều kiện.
Chương trình k chạy báo lỗi ở cuối hàm KiemTraTenDangNhap
Hoặc vòng lặp do…while bị lặp vô hạn.

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