Hỏi về hàm _strlwr_s trong C++

Em có đoạn code

void main()
{
	char str[20];
	cout << "Nhap chuoi : ";
	cin.getline(str, 20);
	chuanhoachuoi(str);
	cout << str;
	system("pause");
}
void chuanhoachuoi(char *str)
{
	_strlwr_s(str);
}

Nếu như em thay chuanhoachuoi(str) bằng _strlwr_s(str) thì chương trình lại chạy bình thường. Mấy anh chị cho em hỏi đoạn code trên sai ở chỗ nào ạ.

_strlwr_s có 2 tham số, bạn sửa thành _strlwr_s(str,streln(str)+1);


Em xin chao cac anh chi
Anh chị cho em hỏi sao em gọi strupr hay strlwr như hình lại bị lỗi vậy ạ .
Em có bị thiếu thư viện hay c++ đã không còn sử dụng dc lệnh này.
Em cảm ơn mọi người.

Các hàm struprstrlwr nằm trong thư viện string.h (cstring).

1 Like

C++ ko có hàm này, hàm này là do 1 vài trình dịch thêm vào.

3 Likes

Chỉ cần biết là mã của chữ thường và hoa đều liên tục:

lower: -‘A’ + ‘a’
upper: -‘a’ + ‘A’

1 Like

Vậy có cách sử dụng hàm này dc ko anh
Em cảm ơn anh

tự viết hàm đó như viết hàm bình thường thôi :V

char* strlwr(char* s) {
    for (char* p = s; *p; ++p) *p = std::tolower(*p);
    return s;
}

char* strupr(char* s) {
    for (char* p = s; *p; ++p) *p = std::toupper(*p);
    return s;
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?