01/10/2018, 10:39

Mọi người giúp đỡ lỗi bị trôi lệnh

#include<stdio.h>
#include<conio.h>

#define MAX 100

	struct Student {
	char id[8];
	char name[255];
	double point;
};
int quantity;
struct Student st[MAX];
int main()
{
	printf("Nhap so hoc vien: ");

	scanf_s("%d", &quantity);
	for (int i = 0; i < quantity; i++) {
		
		printf("
Nhap thong tin hoc vien thu %d", i + 1);
			printf("
Nhap id: ");
			fflush(stdin);
			gets(st[i].id);

		printf("
Nhap ten: ");
		fflush(stdin);
		gets_s(st[i].name, 255);
		printf("
Nhap diem: ");
		scanf_s("%f",&st[i].point);
	}
	system("pause");
	return 0;
}

Mọi người giúp m xem bài code này với.Sao lệnh scanf ở chỗ nhập Id nó bị trôi nhỉ.Mình đã search trên mạng nhưng vẫn không biết lỗi gì.Mình code trên visual studio 2015

Henry viết 12:49 ngày 01/10/2018

fflush(stdin) không có tác dụng. Bạn nên dùng một lệnh khác để thay thế

while((c = getchar()) != '\n' && c != EOF)

Như trên chẳng hạn. Nhớ là include thêm stdlib.h

Dong viết 12:52 ngày 01/10/2018
fflush(stdin) không có tác dụng. Bạn nên dùng một lệnh khác để thay thế

while((c = getchar()) != '\n' && c != EOF)
Như trên chẳng hạn. Nhớ là include thêm stdlib.h

Anh có thể giải thích sao lại không có tác dụng không ạ

Henry viết 12:43 ngày 01/10/2018

Thời thế thay đổi, hình như chỉ dùng được mấy bản cũ thôi.

Dong viết 12:53 ngày 01/10/2018

Anh có thể sửa lại bài của em gửi lên không.Em sửa lại chạy,nó chỉ nhập được 1 vòng

Hoang viết 12:42 ngày 01/10/2018

Để tránh trường hợp bị trôi bạn nên dùng “getline” nhé.

Dong viết 12:54 ngày 01/10/2018

Nếu đổi lệnh khác thì em không nói,Em chỉ muốn hỏi khắc phục như thế nào khi mình vẫn dùng lệnh đó thôi.

Hoang viết 12:53 ngày 01/10/2018

Trường hợp trên là do nó ghi luôn “cả ký tự xuống dòng vào scan đằng sau” nên bạn làm cách nào để nó không bị như vậy nữa là giải quyết được.

Bài liên quan
0