01/10/2018, 00:35

Giải thích về C

em có 1 bài tập về nhà như thế này, lúc đầu e nhập dc thằng x,y nhưng ko nhập được phép tính. Sau 1 hồi hỏi han mới bik là phải thêm %*c , Mấy bác cho e hỏi là tại sao phải thêm %*c không ạ

int x,y;
char pheptinh;
printf("nhap x,y: ");
scanf("%d%d",&x,&y);
printf("Nhap phep tinh: ");
scanf("%*c%c",&pheptinh);
switch(pheptinh)
{
    case '+':
    {
        printf("%d + %d",x,y);
        break;
    }
    case '-':
    {
        printf("%d - %d",x,y);
        break;
    }
    case '*':
    {
        printf("%d * %d",x,y);
        break;
    }
    case '/':
    {
        if(y==0)
        {
            printf("khong chia duoc");
        }
        else
        {
            printf("%d / %d",x,y);
        }
        break;
    }
}
getch();
*grab popcorn* viết 02:36 ngày 01/10/2018

Dấu * có nghĩa là đọc từ buffer nhưng lờ nó đi.
-> %*c = đọc 1 ký tự và ko nhận ký tự đó.
Làm vậy để xóa đi ký tự enter vừa nhập ở phần nhập x, y mà ko cần fflush(stdin)

Tynk Huynk viết 02:36 ngày 01/10/2018

Cho mình góp ý là bạn nên chỉnh sửa chỗ nhập x,y vì giả sử nếu bạn nhập 123 thì compiler sẽ không hiểu là X là 1 và y là 23 hay x là 12 và y là 3 hay bla bla

*grab popcorn* viết 02:47 ngày 01/10/2018

Lúc đó chương trình sẽ coi 123 là 1 số và cho vào x trước.
Sau đó chờ tới khi nhập y thì nó sẽ lấy tiếp. Hầu hết các ký tự whitespace sẽ được bỏ qua cho tới khi y được nhận.

Tonny viết 02:45 ngày 01/10/2018

ok e hiểu rùi cảm ơn a nhiều nha ^^

Bài liên quan
0