Tôi có khối mã này (chức năng bỏ qua như logic là một phần của một bài tập về nhà):C: của Nhiều scanf, khi tôi nhập vào một giá trị cho một scanf nó bỏ qua scanf thứ hai
#include <stdio.h>
int main()
{
char c = 'q';
int size;
printf("\nShape (l/s/t):");
scanf("%c",&c);
printf("Length:");
scanf("%d",&size);
while(c!='q')
{
switch(c)
{
case 'l': line(size); break;
case 's': square(size); break;
case 't': triangle(size); break;
}
printf("\nShape (l/s/t):");
scanf("%c",&c);
printf("\nLength:");
scanf("%d",&size);
}
return 0;
}
Các Đầu tiên, Scanf làm việc rất tốt, không có vấn đề gì khi chúng ta đi vào vòng lặp while, tôi gặp vấn đề ở đâu, khi bạn được yêu cầu nhập một char hình dạng mới, thay vào đó nhảy xuống số printf
của Length và đợi nhập từ đó cho một char, sau đó là một số thập phân trên vòng lặp tiếp theo của vòng lặp.
Lặp lại vòng lặp:
Scanf: Hình dạng. Tác phẩm Tuyệt vời
Scanf: Độ dài. Không có vấn đề
Vòng 1.
Scanf: Hình dạng. Bỏ qua số này
Scanf: length. Vấn đề, scanf này ánh xạ tới hình dạng char.
Vòng 2
Quét: Hình dạng. Bỏ qua số này
Scanf: length. Vấn đề, scanf này ánh xạ tới kích thước int bây giờ.
Tại sao lại thực hiện việc này?
Đó là tuyệt vời !! Cảm ơn^_^ – noMAD
Bạn vừa mới cứu mạng tôi. –
'scanf ("% d "); kết hợp getchar(); 'không thành công nếu người dùng vô tình nhập vào một dấu cách (hoặc các thùng rác khác) sau số đó. – ilkkachu