2010-03-20 127 views

Trả lời

7

Nói chung có, chúng giống nhau.

Nhưng chúng không theo một vài cách nitpicky. Hàm getchar được nhập để trả lại int và không phải char. Điều này được thực hiện để getchar có thể cả hai giá trị char và mã lỗi bổ sung.

Vì vậy, trong khi những sản phẩm sau hạnh phúc biên dịch ở hầu hết các trình biên dịch bạn là chủ yếu cắt bỏ đi một thông báo lỗi

char c = getchar(); 

Chức năng scanf, tuy nhiên, cho phép bạn sử dụng một loại char trực tiếp và có thể chia ra các mã lỗi vào giá trị trả lại.

+1

Không phải thông báo lỗi (như trong, số nhiều), " chỉ "EOF. Nhưng nếu không, điều này là chính xác. Cũng nên nói rằng getchar() hiệu quả hơn scanf(), vì thư viện không phải phân tích cú pháp chuỗi định dạng (và trình liên kết không cần phải liên kết trong khối mã lớn là scanf ()). – DevSolar

1

Họ cũng làm như vậy ở đây. Tuy nhiên, nếu bạn biết bạn chỉ đang thực hiện các ký tự thì getcharputchar sẽ hiệu quả hơn vì các biến thể printfscanf sẽ phải phân tích chuỗi mỗi lần để xác định cách xử lý yêu cầu của bạn. Ngoài ra, chúng có thể được gọi trong thư viện cấp thấp hơn có nghĩa là bạn có thể không phải liên kết printf/scanf nếu chúng không cần ở nơi khác.

Các vấn đề liên quan