Giúp tìm lỗi trong chương trình phát sinh do hàm getchar

mình có code một chương trình đoán số ngẫu nhiên


mình code thế này sử dụng hàm scanf thì nó không vấn đề gì, nhưng thay bằng getchar thì lại errorr, như thế này này

mong các bạn chỉ ra lý do, mình vẫn đang học căn bản lên hơi ngu tí, mong các bạn thông cảm

1 Like

getchar() là bao gồm các kí tự (a-z, A-Z, 0–9, !@#$%^&*()-=+_{}:”?><,./;’[]\|…. ) và không phải là số. Nó tương đương với scanf(“%c”, &var) và đương nhiên với dữ liệu kiểu kí tự không thể so sánh với dữ liệu kiểu số được.

Tham khảo: https://www.quora.com/What-is-the-difference-between-getchar-and-scanf-functions-for-reading-in-c-programming

1 Like

So sánh được nhé. Bản chất kiểu char trong C cũng chỉ là kiểu số thôi.

Tóm lại, bạn thớt nên tìm 1 hàm khác getchar() (như scanf) để đọc số.

5 Likes

Ok anh. :smile: Từ Pascal sang nên còn ngố người. :v

2 Likes

mình vẫn chưa hiểu lắm, theo mình biết thì hàm getchar() có tác dụng như scanf mà không cần phải quan tâm tới kiểu dữ liệu nhập xuất, nên nếu thay getchar() vào nó cũng phải tương tự chứ mới cả ký tự thì cũng chỉ là số thôi mà.

1 Like

getchar() chỉ lấy 1 kí tự thôi. Nếu bạn nhập 4, thì thực tế giá trị của c là 52 chứ không phải là 4 (mã ASCII của ‘4’ là 52). Nếu bạn nhập 23, thì c chỉ có giá trị là ‘2’ = 50 thôi. Kết quả sẽ sai khác rất nhiều.

5 Likes

cảm ơn bạn mình hiểu rồi

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