Nhập vào chuỗi ký tự giới tính, xét xem là nam hay nữ, sau đó xuất ra màn hình giới tính đó

Em có viết một code với nội dung là: “Nhập vào giới tính, xét xem là nam hay nữ, sau đó xuất ra màn hình giới tính đó. (điều kiện là chỉ cho phép nhập nam hoặc nữ, nếu nhập những chữ khác sẽ bắt nhập lại)”
Vì người dùng có thể nhập ‘Nam’ ‘nAm’ ‘nU’ ‘NU’, nên ý tưởng của em là sẽ chuyển tất cả thành ký tự thường là ‘nu’ & ‘nam’ sau đó so sánh nó với điều kiện trong while, nếu không thỏa tức là nhập những chữ khác thì bắt nhập lại.
Nhưng sau khi chạy thì code của em không thể thoát khỏi vòng while kể cả khi em nhập đúng. Mong mọi người chỉ chỗ sai dùm em. Đây là code của em ạ.

    #include <iostream>
    using namespace std;

    int main()
    {
    	char chGioiTinh[4];

    	while ((chGioiTinh != "nu") || (chGioiTinh != "nam")) {
    		cout << "Gioi tinh: ";
    		cin >> chGioiTinh;
    		for (int i = 0; chGioiTinh[i] != '\0'; i++)
    			if (chGioiTinh[i] >= 'A' && chGioiTinh[i] <= 'Z')
    				chGioiTinh[i] = chGioiTinh[i] + 32;
    	}
    	cout << chGioiTinh << endl;
        return 0;
    }

Chuỗi C không có so sánh vậy được, nó thành ra so hai con trỏ rồi.

1 Like

Bạn có thể giải thích rõ hơn cho mình không

Bạn tham khảo so sánh chuỗi bằng hàm strcmp trong thư viện string.h, hoặc bạn có thể tự viết một cái:

https://cachhoc.net/2018/01/19/sanh-chuoi-trong-c-strcmp/

Cảm ơn bạn. Khi mình dùng các hàm tương tự như strcmp, strcpy, v.v. thì chương trình biên dịch luôn báo lỗi _CRT_SECURE_NO_WARNINGS

Cụ thể là warning hay lỗi bạn. Và chương trình có chạy được và đúng không.

Đã code C++ thì dùng luôn std::string đi bạn.

1 Like

Bạn có thể tham khảo cách bỏ warning đi, cái đấy là cảnh báo trong Visual Studio khuyến nghị dùng các hàm CRT được mô tả là “more secure” hơn (do thằng nào định nghĩa thì mình không rõ):

https://kave2.wordpress.com/2015/02/02/_crt_secure_no_warnings-in-microsoft-visual-studio/
3 Likes

nó báo lỗi và không chạy được nha bạn :frowning:

cảm ơn lời khuyên của bạn

Bạn bỏ dk lặp đi sau check lại bằng if rồi break. Dk lặp của b sai rồi

Cảm ơn bạn, code của mình đã chạy được rồi

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