Hãy xem xét đoạn mã sau C:Sự khác nhau giữa scanf ("% c", & c) và scanf ("% c", & c)
#include <stdio.h>
int main()
{
int a;
char c;
scanf("%d",&a);
scanf("%c",&c);
printf("int=%d\n",a);
printf("char=%c\n",c);
}
tôi có thể đầu vào chỉ số nguyên và không phải là đầu ra character.The chỉ đơn giản là giá trị số nguyên và không có giá trị là đầu ra cho câu lệnh printf thứ hai.
Tuy nhiên nếu tôi sử dụng một không gian trước khi sự xác định định dạng:
scanf(" %c",&c);
Nó hoạt động như mong đợi. Tại sao điều này là trường hợp?
Có người nói với tôi rằng nó có liên quan đến việc xóa bộ đệm đầu vào. Ai đó có thể làm sáng tỏ một chút?
Bạn có thể cho biết sự khác biệt giữa việc xóa và bỏ qua bộ đệm không, tôi khá bối rối ở đây? –
Sự khác biệt là chính tả - năm ký tự trước 'ing'. Không có ý nghĩa xác định cho 'xóa' hoặc 'bỏ qua'. Tôi đoán rằng nếu tôi chọn một ý nghĩa, 'xóa' sẽ liên quan đến lập trình viên trong một số công việc rõ ràng, trong khi 'bỏ qua' xảy ra bên trong hàm '-family' của' scanf mà không có bất kỳ công việc rõ ràng nào của lập trình viên, nhưng nó mở cho thảo luận và những người khác có thể có các định nghĩa thay thế hợp pháp sẽ làm việc chặt chẽ. –