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] != ' '; 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.
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:
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.
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õ):
nó báo lỗi và không chạy được nha bạn
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