theo dõi

Gần nhất :

Tags

Thống kê câu hỏi

Chuyên mục : Lập trình
Topic : C
Hỏi lúc:
Lượt xem: 1,660

Switch/String trong C?

03 bình chọn hữu ích bởi Hoàng Minh Hiếu, Nguyễn Công Hiếu Võ Thủy Minh

Tôi đang cố gắng để thực hiện chức năng này để trả về một chuỗi.

char * vergleich(int random) {
    char *erg;
    switch(random) {
        case 1: erg = "Siccor" ; break;
        case 2: erg = "Paper" ; break;
        case 3: erg = "Rock"  ; break;
        case 4: erg = "Lizard" ; break;
        case 5: erg = "Spock" ; break;
        default: break;
            return erg;
    }
}

int main() {
    srand(time(NULL));

    int p1 = rand() % 4;
    int p2 = rand() % 4;

    printf("player1 shows %s\n", vergleich(p1));
    printf("\n\tif Player 2 plays %s or %s Player1 wins\n", vergleich(p1+1), vergleich(p1+3));
    if(p2 == p1 + 1 || p2 == p1 +3) {
        printf("player1 wins");
    }else {printf("player2 wins");}
        return 0;
    }
}

Tôi nghĩ rằng bắt đầu của các hàm là sai, nhưng tôi không thực sự biết làm thế nào để sử lý các chuỗi, xin vui lòng giúp đỡ.

Nếu tôi chạy chương trình nó chỉ bị treo nếu case > 2. và các chuỗi không được hiển thị đúng.

1,660 xem 05 theo dõi 03 hữu ích hỏi –

Bạn biết ai đó có thể trả lời câu hỏi này?. Bạn có thể giúp đỡ bằng cách tìm những người giỏi nhất:

user user user user user

Bùi Đức Bảo Bùi Đức Bảo
 02  00  01
02 bình chọn hữu ích bởi Nguyễn Bá Đạt Hoàng Như Loan

Điều không hay ở đây là khi function vergleich() có thể được gọi với đối số 0(khi p10) và 6(khi p13). 0 6 không được xử lý trong chuyển đổi. Dó đó con trỏ erg là bỏ đi.

Vì vậy, tôi đề nghị để liệt kê các mục của bạn bắt đầu từ 0 đến 4. Để tránh tràn trong khi thêm bạn cũng nên sử dụng toán tử %, ví dụ (p1 + 3)% 5, (p1 + 1)% 5.

Để tạo ra ngẫu nhiên 0-4 bạn có thể sử dụng rand ()% 5.

1,374 xem 02 hữu ích trả lời –
Phạm Như Bảo Phạm Như Bảo
 02  00  02
02 bình chọn hữu ích bởi Lý Đức Công Hoàng Niệm Nhiên

Bạn có thể trực tiếp trả lại xâu:

const char * vergleich(int random) {
    switch(random) {
        case 1: return "Siccor";  
        case 2: return "Paper";  
        case 3: return "Rock";  
        case 4: return "Lizard";  
        case 5: return "Spock";  
        default: break;
    }

   return "";
}

rand ()% 4 sẽ trở lại hoặc là 0, 1, 2, 3 - bạn nên xem xét nó phù hợp với nhu cầu của bạn.

1,376 xem 02 hữu ích trả lời –