Bắt kí tự bàn phím

có cách nào ko dùng getch() mà ko để lại khoảng trắng ở output như hình không ạ. Em muốn nhập vào 1 mảng cho đến khi nào ấn ESC thì break ra. Giúp em với

  1. Nhập trên 1 dòng. Sau đó tách số.
  2. Nhập đến kí gặp -1 (hoặc < 0) thì dừng. Chỉ áp dụng khi yêu cầu mảng luôn dương.
  3. Dùng tín hiệu EOF (phím Ctrl + Z) để kết thúc.
1 Like

dùng EOF cũng chả khác gì mấy anh. Em muốn nó hiển thị là
1
2
3
4
chứ dùng EOF thì vẫn cần đến nhập vào biến esc là ctrl z , thì vẫn có khoảng trắng ở giữa thôi ak

Do bạn xài getch nên đành phải chấp nhận 1 cái enter thôi

  int a;
  do {
    cout << "a: ";
    cin >> a;
    cin.ignore(256, '\n');
    cout << a << "\n";
    cout << "Press any key to continue. Esc to quit!" << "\n";
  } while(getch() != 27);
  return 0;

Còn nếu muốn chày cối, thì xài getch, get từng ký tự xong append vô buffer. Khi gặp ký tự xuống hàng thì convert buffer sang số + cho vô mảng. Gặp esc thì thoát.
Mã giã

int arr[1024];
char buf[1024];
int i = 0;
char c;
while(c = getch(), c != 27) {
 if (c == 10) {
   arr.append(convertToInt(buf));
   buf = [];
   i = 0;
   continue;
 }
 buf[i++] = c;
}
3 Likes

anh ơi cho em hỏi cái này với.
Em muốn mình cứ nhập i cho đến khi nào ấn ESC thì out ra khỏi While thì có cách nào mà ko cần dùng đa luồng ko ạ
image

Bạn muốn làm gì với cái i trên? Game hay sao

3 Likes

dạ cái đấy là nhà trường bài tập bắt phải như thế, em cx chả hiểu kiểu gì nữa

Bạn đưa đề lên cho mọi người coi rõ nào

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