Có phải a = getchar()
tương đương với scanf("%c",&a);
?Là getchar() tương đương với scanf ("% c") và putchar() tương đương với printf ("% c")?
Có phải putchar(a)
tương đương printf("%c",a);
nơi a
là biến số char
?
Có phải a = getchar()
tương đương với scanf("%c",&a);
?Là getchar() tương đương với scanf ("% c") và putchar() tương đương với printf ("% c")?
Có phải putchar(a)
tương đương printf("%c",a);
nơi a
là biến số char
?
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.
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
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ì getchar
và putchar
sẽ hiệu quả hơn vì các biến thể printf
và scanf
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ũng thấy http://stackoverflow.com/questions/2507082/getc-vs-getchar-vs-scanf-for-reading-a-character-from-stdin – Lazer