Giúp về vòng lặp ạ!

Đề là thế này: Viết chương trình lặp lại nhiều lần công việc nhập 1 ký tự và in ra mã ASCII của ký tự đó, khi nào nhập số 0 thì dừng.

Code của mình:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

void main()
{
    char kiTu;

    printf("\nNhap ki tu: ");
    scanf("%c", &kiTu);
    while(kiTu!='0'){
        printf("ASCII: %d", kiTu);
        scanf("%c", &kiTu);
    }
}

Mọi người xem dùm ạ!

Dùng getche() sẽ đọc một kí tự từ bàn phím mà không cần ấn enter. hàm này đồng thời cũng in kí tự vừa đọc ra màn hình. Còn nếu đọc một kí tự mà không in ra thì dùng getch().

Đọc và in 1 kí tự ra màn hình cho đến khi phím 0 được ấn

while(getche()!='0'); 

Kết quả hiện tại của bạn là gì? và kết quả bạn mong muốn là gì?

kết quả của mình thế này

nó ra mã ASCII = 65 là đúng rồi nhưng nó có thêm dòng ASCII: 10 nữa

Mình thử mọi cách mình biết rồi mà cách nào nó cũng có xuất hiện cái dòng đó cả

2 Likes
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
    char kiTu;
    while(kiTu!='0'){
	    printf("\nNhap ki tu: ");
	    scanf(" %c", &kiTu);// thêm khoảng trắng trước %c hoặc thêm \n trước %c là ok nhé
	    printf("ASCII: %d", kiTu);

    }
}

nguyên nhân

scanf(" %c", &newChar);
    /* ^ <-- Makes `scanf` eat the newline. */

mã ascii =10 là line feed , hình như nó là khoảng trắng

1 Like

Có thể giải rõ hơn về cái lỗi đó được không ạ?

google đi rất nhiều đó , tìm kiếm cũng là 1 phương pháp cần thiết để học cntt đấy , mình cũng chỉ đọc lại từ các trang nước ngoài xem họ giải thích thế nào thôi , có nhiều cách khắc phục tình trạng đó chứ không chỉ là cách mình đưa ra ở trên , nên bạn tự tham khảo sẽ tìm đc cách mình thích hơn

Ok, Cảm ơn bạn nhiều nha!

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