01/10/2018, 16:05

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

Hà Hải Nam viết 18:18 ngày 01/10/2018

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

HK boy viết 18:06 ngày 01/10/2018

dữ liệu kiểu kí tự không thể so sánh với dữ liệu kiểu số

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

Ideone.com

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

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

Hà Hải Nam viết 18:21 ngày 01/10/2018

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

Đạt Nguyễn viết 18:14 ngày 01/10/2018

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à.

HK boy viết 18:13 ngày 01/10/2018

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.

Đạt Nguyễn viết 18:14 ngày 01/10/2018

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

Bài liên quan
0